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
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
AC × 2
AC × 20
AC × 33
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