Submission #1628505
Source Code Expand
#include"bits/stdc++.h"
#define PB push_back
#define PF push_front
#define LB lower_bound
#define UB upper_bound
#define fr(x) freopen(x,"r",stdin)
#define fw(x) freopen(x,"w",stdout)
#define iout(x) printf("%d\n",x)
#define lout(x) printf("%lld\n",x)
#define REP(x,l,u) for(int x = (l);x<=(u);x++)
#define RREP(x,l,u) for(int x = (l);x>=(u);x--)
#define mst(x,a) memset(x,a,sizeof(x))
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define MP make_pair
#define se second
#define fi first
#define dbg(x) cout<<#x<<" = "<<(x)<<endl;
#define sz(x) ((int)x.size())
#define cl(x) x.clear()
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ld;
using namespace std;
const int maxn = 100010;
const int mod = 1e9+7;
const double eps = 1e-6;
const double PI = acos(-1);
template<typename T> inline void read(T &x){
x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f;
}
template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);}
template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);}
template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}
template<typename A,typename B> inline A fexp(A x,B p){A ans=1;for(;p;p>>=1,x=1LL*x*x%mod)if(p&1)ans=1LL*ans*x%mod;return ans;}
template<typename A,typename B> inline A fexp(A x,B p,A mo){A ans=1;for(;p;p>>=1,x=1LL*x*x%mo)if(p&1)ans=1LL*ans*x%mo;return ans;}
int n,m;
int has[1<<16],nm[1<<16];
int f[1<<16];
void Work(){
for(int sta=0;sta<1<<n;sta++)nm[sta]=nm[sta>>1]+(sta&1);
f[0]=1;
for(int sta=0;sta<1<<n;sta++)if((sta&3)==3||(sta&3)==0){
for(int s=sta;s;s=(s-1)&sta){
int ans=1;
REP(i,1,n)if(((sta^s)>>i-1)&1)ans=1LL*ans*(fexp(2,nm[has[i]&s])-1)%mod;
int tmp=0;
REP(i,1,n)if((s>>i-1)&1)tmp+=nm[has[i]&(sta^s)];
// if(ans&&f[sta^s])cout<<sta<<' '<<s<<' '<<1LL*f[sta^s]*ans%mod*fexp(2,tmp)<<' '<<tmp<<endl;
f[sta]=(f[sta]+1LL*f[sta^s]*ans%mod*fexp(2,tmp))%mod;
}
// cout<<sta<<' '<<f[sta]<<endl;
}
iout((fexp(2,m)-f[(1<<n)-1]+mod)%mod);
}
void Init(){
read(n,m);
REP(i,1,m){
int u,v;
read(u,v);
has[u]|=1<<v-1;
}
}
int main(){
Init();
Work();
return 0;
}
Submission Info
Submission Time |
|
Task |
F - Games on DAG |
User |
yanQval |
Language |
C++14 (GCC 5.4.1) |
Score |
1600 |
Code Size |
2376 Byte |
Status |
AC |
Exec Time |
1243 ms |
Memory |
512 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 |
1 ms |
256 KB |
0_01.txt |
AC |
1 ms |
256 KB |
0_02.txt |
AC |
1 ms |
256 KB |
0_03.txt |
AC |
1 ms |
256 KB |
1_00.txt |
AC |
1 ms |
256 KB |
1_01.txt |
AC |
762 ms |
512 KB |
1_02.txt |
AC |
770 ms |
512 KB |
1_03.txt |
AC |
1222 ms |
512 KB |
1_04.txt |
AC |
1235 ms |
512 KB |
1_05.txt |
AC |
1222 ms |
512 KB |
1_06.txt |
AC |
1228 ms |
512 KB |
1_07.txt |
AC |
1236 ms |
512 KB |
1_08.txt |
AC |
1227 ms |
512 KB |
1_09.txt |
AC |
1237 ms |
512 KB |
1_10.txt |
AC |
1239 ms |
512 KB |
1_11.txt |
AC |
1227 ms |
512 KB |
1_12.txt |
AC |
1226 ms |
512 KB |
1_13.txt |
AC |
1233 ms |
512 KB |
1_14.txt |
AC |
1227 ms |
512 KB |
1_15.txt |
AC |
1243 ms |
512 KB |
1_16.txt |
AC |
1232 ms |
512 KB |
1_17.txt |
AC |
1233 ms |
512 KB |
1_18.txt |
AC |
1236 ms |
512 KB |
1_19.txt |
AC |
1226 ms |
512 KB |
1_20.txt |
AC |
1005 ms |
512 KB |
1_21.txt |
AC |
5 ms |
256 KB |
1_22.txt |
AC |
1116 ms |
512 KB |
1_23.txt |
AC |
1215 ms |
512 KB |
1_24.txt |
AC |
335 ms |
384 KB |
1_25.txt |
AC |
2 ms |
256 KB |
1_26.txt |
AC |
1237 ms |
512 KB |
1_27.txt |
AC |
36 ms |
256 KB |
1_28.txt |
AC |
871 ms |
512 KB |
1_29.txt |
AC |
122 ms |
256 KB |
1_30.txt |
AC |
26 ms |
256 KB |
1_31.txt |
AC |
1232 ms |
512 KB |
1_32.txt |
AC |
122 ms |
256 KB |
1_33.txt |
AC |
35 ms |
256 KB |
1_34.txt |
AC |
357 ms |
384 KB |
1_35.txt |
AC |
121 ms |
256 KB |