#include <iostream> using namespace std; int m,n,case_t,t,parent[5005]; int num[5005],opp[5005]; bool flag; void makeset() { int x; for(x=1;x<=n;x++) { parent[x]=x; num[x]=0; opp[x]=-1; } } int findset(int x) { if(parent[x]!=x) parent[x]=findset(parent[x]); return parent[x]; } void unionset(int x,int y) { x=findset(x); y=findset(y); if(num[x]>num[y]) parent[y]=x; else if(num[x]<num[y]) parent[x]=y; else { parent[y]=x; num[x]++; } } int main() { int i,j,x,y; scanf("%d",&t); while(t--) { case_t++; scanf("%d%d",&n,&m); makeset(); flag=1; for(i=1;i<=m;i++) { scanf("%d%d",&x,&y); if(findset(x)==findset(y)) flag=0; else { if(opp[x]!=-1) unionset(opp[x],y); if(opp[y]!=-1) unionset(x,opp[y]); opp[x]=y; opp[y]=x; } } if(flag==0) { printf("Scenario #%d:/n",case_t); printf("Suspicious bugs found!/n/n");; } else { printf("Scenario #%d:/n",case_t); printf("No suspicious bugs found!/n/n");; } } return 0; }
poj 2492 A Bug's Life
最新推荐文章于 2017-05-29 13:14:49 发布