Submission #1363046
Source Code Expand
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <map>
#include <cstring>
#include <string>
#include <cmath>
#include <cassert>
#include <ctime>
#include <algorithm>
#include <sstream>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <cstdlib>
#include <cstdio>
#include <iterator>
#include <functional>
#include <bitset>
#ifdef LOCAL
#define eprintf(...) fprintf(stderr,__VA_ARGS__)
#else
#define eprintf(...)
#endif
#define TIMESTAMP(x) eprintf("["#x"] Time : %.3lf s.\n", clock()*1.0/CLOCKS_PER_SEC)
#define TIMESTAMPf(x,...) eprintf("[" x "] Time : %.3lf s.\n", __VA_ARGS__, clock()*1.0/CLOCKS_PER_SEC)
using namespace std;
#ifdef LOCAL
static struct __timestamper {
string what;
__timestamper(const char* what) : what(what){};
__timestamper(const string& what) : what(what){};
~__timestamper(){
TIMESTAMPf("%s", what.data());
}
} __TIMESTAMPER("end");
#else
struct __timestamper {};
#endif
typedef long long ll;
typedef long double ld;
int g[20];
int dp[(1 << 15)];
int n;
const int MOD = 1000000007;
int add(int &a, int b) {
if ((a += b) >= MOD) a -= MOD;
}
int mult(int a, int b) {
return (a * 1LL * b) % MOD;
}
void solve(int mask) {
int& ans = dp[mask];
ans = 0;
for (int submask = mask; submask != 0; submask = (submask - 1) & mask) {
if ((submask & 1) != ((submask >> 1) & 1)) continue;
int coef = 1;
for (int j = 0; j < n; j++) {
if (!(mask & (1 << j))) {
int c = __builtin_popcount(g[j] & submask);
coef = mult(coef, (1 << c) - 1);
}
if (submask & (1 << j)) {
int c = __builtin_popcount(g[j] & ~mask);
coef = mult(coef, (1 << c));
}
}
add(ans, mult(coef, dp[mask ^ submask]));
}
}
int main() {
#ifdef LOCAL
freopen("f.in", "r", stdin);
freopen("f.out", "w", stdout);
#endif
int m;
while (scanf("%d%d", &n, &m) == 2) {
memset(g, 0, sizeof(g));
memset(dp, -1, sizeof(dp));
for (int i = 0; i < m; i++) {
int a, b;
scanf("%d%d", &a, &b);
--a, --b;
g[a] |= (1 << b);
}
dp[0] = 1;
for (int mask = 1; mask < (1 << n); mask++) {
solve(mask);
}
int ans = 1;
for (int i = 0; i < m; i++) {
ans = mult(ans, 2);
}
add(ans, MOD - dp[(1 << n) - 1]);
printf("%d\n", ans);
}
return 0;
}
Submission Info
Submission Time
2017-06-18 22:42:30+0900
Task
F - Games on DAG
User
kunyavskiy
Language
C++14 (GCC 5.4.1)
Score
1600
Code Size
2478 Byte
Status
AC
Exec Time
865 ms
Memory
512 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:98:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &a, &b);
^
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
1 ms
384 KB
0_01.txt
AC
1 ms
384 KB
0_02.txt
AC
1 ms
384 KB
0_03.txt
AC
1 ms
384 KB
1_00.txt
AC
1 ms
384 KB
1_01.txt
AC
856 ms
384 KB
1_02.txt
AC
855 ms
384 KB
1_03.txt
AC
859 ms
384 KB
1_04.txt
AC
858 ms
384 KB
1_05.txt
AC
860 ms
384 KB
1_06.txt
AC
858 ms
384 KB
1_07.txt
AC
859 ms
384 KB
1_08.txt
AC
862 ms
384 KB
1_09.txt
AC
861 ms
384 KB
1_10.txt
AC
860 ms
384 KB
1_11.txt
AC
859 ms
384 KB
1_12.txt
AC
861 ms
384 KB
1_13.txt
AC
861 ms
384 KB
1_14.txt
AC
862 ms
384 KB
1_15.txt
AC
860 ms
512 KB
1_16.txt
AC
860 ms
384 KB
1_17.txt
AC
860 ms
384 KB
1_18.txt
AC
855 ms
384 KB
1_19.txt
AC
859 ms
384 KB
1_20.txt
AC
856 ms
384 KB
1_21.txt
AC
4 ms
384 KB
1_22.txt
AC
854 ms
384 KB
1_23.txt
AC
858 ms
384 KB
1_24.txt
AC
274 ms
384 KB
1_25.txt
AC
2 ms
384 KB
1_26.txt
AC
857 ms
384 KB
1_27.txt
AC
28 ms
384 KB
1_28.txt
AC
855 ms
384 KB
1_29.txt
AC
88 ms
384 KB
1_30.txt
AC
29 ms
384 KB
1_31.txt
AC
865 ms
384 KB
1_32.txt
AC
88 ms
384 KB
1_33.txt
AC
29 ms
384 KB
1_34.txt
AC
275 ms
384 KB
1_35.txt
AC
88 ms
384 KB