标签:
1 #include <cstdio> 2 using namespace std; 3 int f[2000+5],num[2000+5],t,n,m,a,b,fa,fb; 4 int sf(int x){ 5 if(x==f[x]) return x; 6 else { 7 int fx=sf(f[x]); 8 num[x]=(num[x]+num[f[x]])%2; 9 return f[x]=fx; 10 } 11 } 12 int main(){ 13 scanf("%d",&t); 14 for(int k=1;k<=t;k++){ 15 printf("Scenario #%d:\n",k); 16 scanf("%d%d",&n,&m); bool flag=1; 17 for(int i=0;i<=n;i++) f[i]=i,num[i]=0; 18 for(int i=1;i<=m;i++){ 19 scanf("%d%d",&a,&b); 20 if(flag){ 21 fa=sf(a); fb=sf(b); 22 if(fa==fb){ if((num[a]-num[b]+2)%2!=1) flag=0;}//避免负数 23 else f[fb]=fa,num[fb]=(num[a]-num[b]+1+2)%2; 24 } 25 } 26 if(flag) puts("No suspicious bugs found!\n"); 27 else puts("Suspicious bugs found!\n"); 28 } return 0; 29 }
标签:
原文地址:http://www.cnblogs.com/nicetomeetu/p/5164380.html