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 |
|
|
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 |