Submission #337977
Source Code Expand
#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,b) FOR(i,0,b)
#define X first
#define Y second
#define S second
#define F first
#define PB(a) push_back(a)
#define BE(c) c.begin(),c.end()
using namespace std;
typedef long long LL;
typedef pair<LL,LL> pr;
typedef pair<LL,pr> ppr;
typedef priority_queue<ppr,vector<ppr>,greater<ppr> > PQ;
typedef vector<pr> Vpr;
typedef vector<ppr> Vppr;
typedef vector<int> VI;
const int INF=1<<30;
const int SIZE=500001;
const LL p=(1e+9)+7;
int unions[SIZE];
LL twin[SIZE+1];
bool need[SIZE];
Vpr edges;
Vpr edge[SIZE];
int reached[SIZE];
LL twins(int x){
if(twin[x]) return twin[x];
if(x==0) return 1;
if(x==1) return 2;
return twin[x]=(twins(x/2)*twins((x+1)/2))%p;
}
int find(int x){
if(x==unions[x]) return x;
return unions[x]=find(unions[x]);
}
void unit(int a,int b){
a=find(a);
b=find(b);
unions[max(a,b)]=min(a,b);
}
bool isfriend(int a,int b){
return find(a)==find(b);
}
int main(){
int N,M,c,a,b;
LL x,y;
LL ans=0;
cin >> N >> M;
REP(i,SIZE)
unions[i]=i;
REP(i,M){
scanf("%d%d",&a,&b);
if(!isfriend(a,b)){
unit(a,b);
edge[a].PB(pr(b,i+1));
edge[b].PB(pr(a,i+1));
}
edges.PB(pr(a,b));
need[a]^=1;
need[b]^=1;
ans=(ans+twins(i+1))%p;
}
queue<int> qu;
FOR(i,1,N+1){
if(edge[i].size()==1){
qu.push(i);
}
}
while(!qu.empty()){
int now=qu.front();
reached[now]++;
REP(i,edge[now].size()){
int next=edge[now][i].F;
int cost=edge[now][i].S;
if(reached[next]==edge[next].size()) continue;
if(need[now]){
ans=(ans+twins(cost))%p;
need[next]^=1;
}
reached[next]++;
if(reached[next]+1==edge[next].size()) qu.push(next);
}
qu.pop();
}
cout << ans << endl;
}
Submission Info
Submission Time
2015-02-14 17:53:49+0900
Task
C - ドライブ
User
reew2n
Language
C++ (G++ 4.6.4)
Score
110
Code Size
1816 Byte
Status
AC
Exec Time
864 ms
Memory
50128 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:54:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
Judge Result
Set Name
Sample
Subtask1
Subtask2
Score / Max Score
0 / 0
40 / 40
70 / 70
Status
Set Name
Test Cases
Sample
sample_01.txt, sample_02.txt
Subtask1
sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt
Subtask2
subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt
Case Name
Status
Exec Time
Memory
sample_01.txt
AC
48 ms
14380 KB
sample_02.txt
AC
47 ms
14376 KB
subtask1_01.txt
AC
47 ms
14372 KB
subtask1_02.txt
AC
49 ms
14444 KB
subtask1_03.txt
AC
46 ms
14368 KB
subtask1_04.txt
AC
49 ms
14628 KB
subtask1_05.txt
AC
49 ms
14628 KB
subtask1_06.txt
AC
49 ms
14628 KB
subtask1_07.txt
AC
49 ms
14684 KB
subtask1_08.txt
AC
49 ms
14624 KB
subtask1_09.txt
AC
50 ms
14624 KB
subtask1_10.txt
AC
50 ms
14620 KB
subtask1_11.txt
AC
48 ms
14632 KB
subtask1_12.txt
AC
47 ms
14740 KB
subtask1_13.txt
AC
48 ms
14628 KB
subtask1_14.txt
AC
49 ms
14624 KB
subtask1_15.txt
AC
49 ms
14496 KB
subtask1_16.txt
AC
48 ms
14688 KB
subtask1_17.txt
AC
48 ms
14576 KB
subtask1_18.txt
AC
47 ms
14564 KB
subtask2_01.txt
AC
801 ms
49348 KB
subtask2_02.txt
AC
775 ms
49156 KB
subtask2_03.txt
AC
624 ms
48372 KB
subtask2_04.txt
AC
864 ms
49916 KB
subtask2_05.txt
AC
793 ms
47372 KB
subtask2_06.txt
AC
810 ms
47100 KB
subtask2_07.txt
AC
534 ms
46192 KB
subtask2_08.txt
AC
716 ms
46660 KB
subtask2_09.txt
AC
809 ms
50128 KB
subtask2_10.txt
AC
194 ms
22424 KB
subtask2_11.txt
AC
187 ms
25420 KB
subtask2_12.txt
AC
560 ms
38924 KB
subtask2_13.txt
AC
784 ms
44808 KB
subtask2_14.txt
AC
802 ms
47760 KB
subtask2_15.txt
AC
231 ms
26292 KB