#include<stdio.h> #include<cstring> #define BUGN 2000 class Node { public: int Fat; int Rank; }; Node ptr[2*BUGN]; void Init(int n) { for(int lx=0;lx<2*n;lx++) ptr[lx].Fat=lx,ptr[lx].Rank=1; } int Getfather(int I) { if(ptr[I].Fat==I) return I; ptr[I].Fat=Getfather(ptr[I].Fat); return ptr[I].Fat; } void Union(int a,int b) { int af=Getfather(a); int bf=Getfather(b); if(ptr[af].Rank>ptr[bf].Rank) ptr[bf].Fat=af; else if(ptr[af].Rank<ptr[bf].Rank) ptr[af].Fat=bf; else { ptr[af].Fat=bf; ptr[bf].Rank++; } } int main() { int T,lx=1;scanf("%d",&T); while(T--) { printf("Scenario #%d:\n",lx); int n,s;scanf("%d %d",&n,&s); Init(n); int pa,pb; while(s--) { scanf("%d %d",&pa,&pb); Union(pa-1,n+pb-1); Union(pb-1,n+pa-1); } int Check=true; for(int lx=0;(lx<n)&&Check;lx++) Check=(Getfather(lx)!=Getfather(n+lx)); if(!Check) printf("Suspicious bugs found!\n\n"); else printf("No suspicious bugs found!\n\n"); lx++; } return 0; }
2013年11月24日 星期日
POJ 2492 A Bug's Life
[DISJIONT SET]
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言