Submission #2163084


Source Code Expand

#include <bits/stdc++.h>

typedef long long LL;

#define FOR(i, a, b) for (int i = (a), i##_END_ = (b); i <= i##_END_; i++)
#define DNF(i, a, b) for (int i = (a), i##_END_ = (b); i >= i##_END_; i--)

template <typename Tp> void in(Tp &x) {
	char ch = getchar(), f = 1; x = 0;
	while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
	if (ch == '-') ch = getchar(), f = -1;
	while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
	x *= f;
}

template <typename Tp> void out(Tp x) {
	if (x > 9) out(x / 10);
	putchar(x % 10 + '0');
	return;
}

template <typename Tp> Tp Max(const Tp &x, const Tp &y) {return x > y ? x : y;}
template <typename Tp> Tp Min(const Tp &x, const Tp &y) {return x < y ? x : y;}
template <typename Tp> bool chkmax(Tp &x, Tp y) {return x >= y ? 0 : (x=y, 1);}
template <typename Tp> bool chkmin(Tp &x, Tp y) {return x <= y ? 0 : (x=y, 1);}

const int MAXN = 16;
const int MOD = 1000000007;

int n, m;
bool edge[MAXN][MAXN];

int In[MAXN][32768], Out[MAXN][32768];
int f[32768];

int power(int x, int y)
{
	int ret = 1;
	while (y) {
		if (y & 1) ret = 1ll * ret * x % MOD;
		x = 1ll * x * x % MOD;
		y >>= 1;
	}
	return ret;
}

int main()
{
	in(n); in(m);
	FOR(i, 1, m) {int x, y; in(x); in(y); edge[x][y] = true;}

	FOR(i, 1, n) FOR(j, 0, (1 << n) - 1) {
		FOR(k, 1, n) if (j >> (k - 1) & 1) In[i][j] += edge[k][i];
		FOR(k, 1, n) if (j >> (k - 1) & 1) Out[i][j] += edge[i][k];
	}

	f[0] = 1;
	
	FOR(i, 1, (1 << n) - 1) {
		f[i] = 0;
		for (int j = i; j; j = (j - 1) & i) {
			int ret = 1;
			if ((j & 1) ^ (j >> 1 & 1)) continue;
			FOR(k, 1, n) if (j >> (k - 1) & 1) ret = ret * 1ll * power(2, Out[k][i - j]) % MOD;
			FOR(k, 1, n) if ((i - j) >> (k - 1) & 1) ret = ret * 1ll * (power(2, Out[k][j]) - 1) % MOD;
			f[i] = (f[i] + ret * 1ll * f[i - j]) % MOD;
		}
	}

	printf("%d\n", (power(2, m) - f[(1 << n) - 1] + MOD) % MOD);

	return 0;
}

Submission Info

Submission Time
Task F - Games on DAG
User xy20130630
Language C++14 (GCC 5.4.1)
Score 1600
Code Size 1958 Byte
Status AC
Exec Time 1573 ms
Memory 4352 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1600 / 1600
Status
AC × 4
AC × 40
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt
Case Name Status Exec Time Memory
0_00.txt AC 2 ms 2304 KB
0_01.txt AC 2 ms 2304 KB
0_02.txt AC 2 ms 2304 KB
0_03.txt AC 2 ms 2304 KB
1_00.txt AC 2 ms 2304 KB
1_01.txt AC 915 ms 4352 KB
1_02.txt AC 928 ms 4352 KB
1_03.txt AC 1478 ms 4352 KB
1_04.txt AC 1528 ms 4352 KB
1_05.txt AC 1479 ms 4352 KB
1_06.txt AC 1503 ms 4352 KB
1_07.txt AC 1542 ms 4352 KB
1_08.txt AC 1490 ms 4352 KB
1_09.txt AC 1544 ms 4352 KB
1_10.txt AC 1545 ms 4352 KB
1_11.txt AC 1502 ms 4352 KB
1_12.txt AC 1493 ms 4352 KB
1_13.txt AC 1513 ms 4352 KB
1_14.txt AC 1496 ms 4352 KB
1_15.txt AC 1549 ms 4352 KB
1_16.txt AC 1524 ms 4352 KB
1_17.txt AC 1506 ms 4352 KB
1_18.txt AC 1553 ms 4352 KB
1_19.txt AC 1495 ms 4352 KB
1_20.txt AC 1236 ms 4352 KB
1_21.txt AC 6 ms 2432 KB
1_22.txt AC 1408 ms 4352 KB
1_23.txt AC 1554 ms 4352 KB
1_24.txt AC 416 ms 3328 KB
1_25.txt AC 3 ms 2304 KB
1_26.txt AC 1573 ms 4352 KB
1_27.txt AC 45 ms 2560 KB
1_28.txt AC 1047 ms 4352 KB
1_29.txt AC 152 ms 2816 KB
1_30.txt AC 34 ms 2560 KB
1_31.txt AC 1519 ms 4352 KB
1_32.txt AC 147 ms 2816 KB
1_33.txt AC 45 ms 2560 KB
1_34.txt AC 443 ms 3328 KB
1_35.txt AC 150 ms 2816 KB