QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#423350 | #8729. Tikvani | Crysfly | 0 | 1ms | 3772kb | C++17 | 3.1kb | 2024-05-27 22:33:58 | 2024-05-27 22:33:58 |
Judging History
answer
// what is matter? never mind.
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC target("sse,sse2,sse3,sse4,popcnt,abm,mmx,avx,avx2")
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define ll long long
//#define int long long
#define ull unsigned long long
#define SZ(x) ((int)((x).size()))
#define ALL(x) (x).begin(),(x).end()
using namespace std;
inline int read()
{
char c=getchar();int x=0;bool f=0;
for(;!isdigit(c);c=getchar())f^=!(c^45);
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return x;
}
#define mod 1000000007
struct modint{
int x;
modint(int o=0){x=o;}
modint &operator = (int o){return x=o,*this;}
modint &operator +=(modint o){return x=x+o.x>=mod?x+o.x-mod:x+o.x,*this;}
modint &operator -=(modint o){return x=x-o.x<0?x-o.x+mod:x-o.x,*this;}
modint &operator *=(modint o){return x=1ll*x*o.x%mod,*this;}
modint &operator ^=(int b){
modint a=*this,c=1;
for(;b;b>>=1,a*=a)if(b&1)c*=a;
return x=c.x,*this;
}
modint &operator /=(modint o){return *this *=o^=mod-2;}
friend modint operator +(modint a,modint b){return a+=b;}
friend modint operator -(modint a,modint b){return a-=b;}
friend modint operator *(modint a,modint b){return a*=b;}
friend modint operator /(modint a,modint b){return a/=b;}
friend modint operator ^(modint a,int b){return a^=b;}
friend bool operator ==(modint a,modint b){return a.x==b.x;}
friend bool operator !=(modint a,modint b){return a.x!=b.x;}
bool operator ! () {return !x;}
modint operator - () {return x?mod-x:0;}
bool operator <(const modint&b)const{return x<b.x;}
};
inline modint qpow(modint x,int y){return x^y;}
vector<modint> fac,ifac,iv;
inline void initC(int n)
{
if(iv.empty())fac=ifac=iv=vector<modint>(2,1);
int m=iv.size(); ++n;
if(m>=n)return;
iv.resize(n),fac.resize(n),ifac.resize(n);
For(i,m,n-1){
iv[i]=iv[mod%i]*(mod-mod/i);
fac[i]=fac[i-1]*i,ifac[i]=ifac[i-1]*iv[i];
}
}
inline modint C(int n,int m){
if(m<0||n<m)return 0;
return initC(n),fac[n]*ifac[m]*ifac[n-m];
}
inline modint sign(int n){return (n&1)?(mod-1):(1);}
#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;
#define maxn 505
#define inf 0x3f3f3f3f
int n,m;
typedef bitset<maxn> bint;
struct bas{
int cnt;
bint t[maxn];
void ins(bint x){
Rep(i,m,1)
if(x[i]){
if(!t[i][i]) return t[i]=x,++cnt,void();
x^=t[i];
}
}
}B;
vector<pii>e[maxn];
bint val[maxn];
bool vis[maxn];
void dfs(int u){
vis[u]=1;
for(auto [v,id]:e[u]){
if(!vis[v]){
val[v]=val[u],val[v].flip(id);
dfs(v);
}
else {
bint tmp=(val[u]^val[u]); tmp.flip(id);
B.ins(tmp);
}
}
}
signed main()
{
n=read(),m=read();
For(i,1,m){
int u=read(),v=read();
e[u].pb(mkp(v,i));
}
For(u,1,n){
For(i,1,n) vis[i]=0;
dfs(u);
}
int res=m-B.cnt;
cout<<qpow(2,res).x;
return 0;
}
/*
6 7
2 5
2 3
3 6
2 4
1 4
1 6
1 5
*/
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 21
Accepted
time: 1ms
memory: 3696kb
input:
6 5 3 5 2 5 1 6 4 6 2 6
output:
32
result:
ok 1 number(s): "32"
Test #2:
score: 21
Accepted
time: 0ms
memory: 3756kb
input:
6 6 2 5 1 2 3 4 5 6 3 6 1 5
output:
32
result:
ok 1 number(s): "32"
Test #3:
score: 21
Accepted
time: 0ms
memory: 3752kb
input:
6 7 3 6 1 3 3 5 2 3 1 6 2 6 2 5
output:
16
result:
ok 1 number(s): "16"
Test #4:
score: 21
Accepted
time: 0ms
memory: 3700kb
input:
6 8 1 4 2 3 5 6 3 6 4 5 2 6 4 6 1 5
output:
32
result:
ok 1 number(s): "32"
Test #5:
score: 21
Accepted
time: 0ms
memory: 3700kb
input:
6 7 1 4 3 6 2 3 1 5 2 4 2 6 5 6
output:
64
result:
ok 1 number(s): "64"
Test #6:
score: 21
Accepted
time: 0ms
memory: 3640kb
input:
6 8 2 3 2 4 2 5 3 6 1 6 1 2 1 4 1 5
output:
32
result:
ok 1 number(s): "32"
Test #7:
score: 21
Accepted
time: 0ms
memory: 3772kb
input:
6 7 5 6 2 5 2 4 1 6 2 3 3 6 1 2
output:
32
result:
ok 1 number(s): "32"
Test #8:
score: 21
Accepted
time: 0ms
memory: 3696kb
input:
6 8 2 3 1 4 2 4 3 6 1 5 5 6 1 6 2 6
output:
64
result:
ok 1 number(s): "64"
Test #9:
score: 0
Wrong Answer
time: 0ms
memory: 3636kb
input:
6 7 2 6 4 5 1 2 3 6 3 5 1 4 5 6
output:
64
result:
wrong answer 1st numbers differ - expected: '32', found: '64'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Wrong Answer
Test #25:
score: 37
Accepted
time: 0ms
memory: 3716kb
input:
50 50 29 32 3 12 36 41 10 30 6 18 20 27 14 36 4 33 6 7 17 31 33 40 2 49 19 42 3 30 2 18 11 42 21 29 11 23 1 35 32 50 22 46 6 22 42 48 15 23 7 43 11 13 5 9 40 50 25 42 5 31 27 30 1 17 14 48 5 44 35 41 1 23 10 21 40 48 12 36 13 37 23 37 23 43 19 26 6 15 13 45 19 27 17 29 20 38 29 42 26 49
output:
974740338
result:
ok 1 number(s): "974740338"
Test #26:
score: 37
Accepted
time: 0ms
memory: 3696kb
input:
49 50 23 42 22 30 8 18 28 42 14 37 34 40 11 34 2 5 9 14 24 34 11 32 41 45 8 28 6 23 9 17 22 31 20 38 4 47 2 39 13 22 14 26 8 45 37 45 17 23 34 37 13 37 33 48 5 12 17 37 27 30 17 21 18 22 28 43 10 23 33 43 31 49 10 43 8 26 12 19 14 28 6 14 2 20 12 49 26 39 35 45 14 48 3 6 14 36 6 48 1 17
output:
743685088
result:
ok 1 number(s): "743685088"
Test #27:
score: 37
Accepted
time: 1ms
memory: 3628kb
input:
48 50 4 39 3 43 41 47 10 34 19 36 5 17 19 35 34 38 5 30 32 47 10 41 3 44 11 29 13 37 5 47 18 33 1 45 29 45 2 13 2 38 8 36 3 34 40 45 8 20 4 21 4 31 18 43 29 32 26 38 13 29 35 48 10 36 1 9 14 23 13 34 16 27 5 18 16 36 1 6 1 36 36 44 39 43 21 39 30 42 11 18 5 11 9 37 15 30 25 45 29 40
output:
371842544
result:
ok 1 number(s): "371842544"
Test #28:
score: 37
Accepted
time: 0ms
memory: 3760kb
input:
47 50 16 21 23 44 12 42 8 25 5 19 29 37 11 27 14 20 18 44 46 47 8 42 20 29 1 29 19 31 2 33 16 27 13 39 37 40 12 18 3 37 2 43 35 43 19 22 3 44 19 32 42 46 29 33 1 4 3 18 7 38 2 40 4 26 16 31 28 45 20 34 12 15 5 17 14 41 13 20 25 41 6 15 31 33 24 35 13 33 7 11 12 16 2 31 35 44 10 25 17 47
output:
487370169
result:
ok 1 number(s): "487370169"
Test #29:
score: 37
Accepted
time: 0ms
memory: 3712kb
input:
46 50 1 35 27 34 2 46 18 23 7 45 17 28 12 38 6 17 38 42 15 46 1 29 11 14 12 27 4 39 37 38 25 30 2 42 22 23 13 27 7 15 30 33 19 27 27 36 26 42 20 42 25 37 27 33 30 38 16 32 5 33 17 34 12 31 35 40 15 39 40 44 10 38 19 41 24 36 38 46 19 29 19 35 8 28 12 45 27 40 22 40 8 27 16 19 10 22 12 20 17 35
output:
487370169
result:
ok 1 number(s): "487370169"
Test #30:
score: 0
Wrong Answer
time: 1ms
memory: 3732kb
input:
45 50 38 45 29 43 24 38 1 44 16 22 13 21 3 7 35 45 22 33 27 38 11 26 29 32 3 15 34 36 17 34 14 33 29 35 12 13 11 18 15 41 5 45 20 41 12 27 21 39 15 34 33 42 32 42 13 44 25 37 3 4 14 25 28 34 7 14 4 41 9 27 23 35 39 45 6 29 26 30 10 35 18 43 4 12 2 9 23 40 3 40 16 43 2 28 27 45 4 35 14 35
output:
185921272
result:
wrong answer 1st numbers differ - expected: '371842544', found: '185921272'
Subtask #4:
score: 0
Skipped
Dependency #1:
0%