和poj1703的题很相似,也是用分组来做;等学会了向量偏移量再补吧;
#include<cstdio>
const int maxn=2000+10;
int p[maxn<<1];
int find(int x)
{
return p[x]==x?x:p[x]=find(p[x]);
}
int main()
{
int T,cas=0;
scanf("%d",&T);
while(cas!=T){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=2*n;i++)p[i]=i;
int a,b;
bool flag=true;
while(m--){
scanf("%d%d",&a,&b);
int x1=find(a),y1=find(a+n);
int x2=find(b),y2=find(b+n);
if(!flag)continue;
else{
if(x1==x2){
flag=false;
continue;
}
p[y1]=x2;
p[y2]=x1;
}
}
cas++;
printf("Scenario #%d:\n",cas);
if(!flag)printf("Suspicious bugs found!\n\n");
else printf("No suspicious bugs found!\n\n");
}
return 0;
}