标签:
2 3 3 1 2 2 3 1 3 4 2 1 2 3 4
Scenario #1: Suspicious bugs found! Scenario #2: No suspicious bugs found!HintHuge input,scanf is recommended.
#include<stdio.h> int root[2010]; int rank[2010]; int find_set(int x){ if(root[x]==x) return x; int t=root[x]; root[x]=find_set(t); rank[x]=(rank[x]+rank[t])%2; return root[x]; } void unio(int a,int b){ int t,k; t=root[a]; k=root[b]; root[t]=k; rank[t]=(rank[b]+1-rank[a]); return ; } int main(){ int t,cas=0;; scanf("%d",&t); while(t--){ printf("Scenario #%d:\n",++cas); int n,m,i,ok=0,a,b; scanf("%d%d",&n,&m); for(i=0;i<=n;++i){ root[i]=i; rank[i]=0; } for(i=0;i<m;++i){ scanf("%d%d",&a,&b); if(!ok){ int pa,pb; pa=find_set(a) ; pb=find_set(b); if(pa==pb&&(rank[a]==rank[b])){ ok=1; } else unio(a,b); } } if(ok) printf("Suspicious bugs found!\n\n"); else printf("No suspicious bugs found!\n\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/qq_18062811/article/details/47082779