POJ2492 -A Bug's Life(种类并查集)
2017-09-02 16:57
399 查看
题意:
跟食物链那题差不多,不过更简单。寻找是否存在同性恋的虫子。
用r[i]表示跟i与根节点的关系,1表示不同性别,0表示同性。每次只要检查r[a]与r[b]是否相等就可以。
ps:自己脑抽突然在判断r[a]和r[b]关系的时候写了个选择语句,无情wa多次,wa到怀疑人生。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
using namespace std;
const int N=2100;
#define inf 0x3f3f3f3f
int n,m,f
,r
,flag;
int find(int x){
int te=f[x];
if(te==x) return x;
f[x]=find(f[x]);
r[x]=(r[x]+r[te])%2;
return f[x];
}
void uni(int r1,int r2){
int x=find(r1);
int y=find(r2);
if(x!=y){
f[x]=y;
r[x]=(1-r[r1]+r[r2])%2;
}
}
int main(){
int T,ca=1;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
flag=1;
for(int i=1;i<=n;i++)
f[i]=i;
memset(r,0,sizeof(r));
for(int i=0;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
if(find(a)==find(b)){
if(r[a]==r[b])//当时就是在这里抽风,写了选择语句,导致flag=0后还会被修改为1;
flag = 0;
}
else{
uni(a,b);
}
}
if(flag) printf("Scenario #%d:\nNo suspicious bugs found!\n\n",ca++);
else printf("Scenario #%d:\nSuspicious bugs found!\n\n",ca++);
}
return 0;
}
跟食物链那题差不多,不过更简单。寻找是否存在同性恋的虫子。
用r[i]表示跟i与根节点的关系,1表示不同性别,0表示同性。每次只要检查r[a]与r[b]是否相等就可以。
ps:自己脑抽突然在判断r[a]和r[b]关系的时候写了个选择语句,无情wa多次,wa到怀疑人生。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
using namespace std;
const int N=2100;
#define inf 0x3f3f3f3f
int n,m,f
,r
,flag;
int find(int x){
int te=f[x];
if(te==x) return x;
f[x]=find(f[x]);
r[x]=(r[x]+r[te])%2;
return f[x];
}
void uni(int r1,int r2){
int x=find(r1);
int y=find(r2);
if(x!=y){
f[x]=y;
r[x]=(1-r[r1]+r[r2])%2;
}
}
int main(){
int T,ca=1;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
flag=1;
for(int i=1;i<=n;i++)
f[i]=i;
memset(r,0,sizeof(r));
for(int i=0;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
if(find(a)==find(b)){
if(r[a]==r[b])//当时就是在这里抽风,写了选择语句,导致flag=0后还会被修改为1;
flag = 0;
}
else{
uni(a,b);
}
}
if(flag) printf("Scenario #%d:\nNo suspicious bugs found!\n\n",ca++);
else printf("Scenario #%d:\nSuspicious bugs found!\n\n",ca++);
}
return 0;
}
相关文章推荐
- HDU 1829 A Bug's Life(种类并查集)
- poj 2492 A Bug's Life(种类并查集)
- A Bug's Life(hdu1829种类并查集)
- POJ - 2492 A Bug's Life(种类并查集)
- POJ2492 A Bug's Life 并查集
- hdu 1829 A Bug's Life (种类并查集)
- POJ2492 A Bug's Life 种群并查集
- hdoj-1289-A Bug's Life【种类并查集】
- poj2492 A Bug's Life 种类并查集
- HDU 1829 A Bug's Life-基础种类并查集
- POJ 2492 A Bug's Life(种类并查集 + 偏移量)
- 并查集(种类并查集)POJ2492A Bug's Life解题报告
- HDU 1829 A Bug's Life(种类并查集)
- HDU 1829 A Bug's Life(基础种类并查集)
- HDU 1829 A Bug's Life(基础种类并查集)
- A Bug's Life(POJ - 2492)种类并查集
- poj2492--A Bug's Life(并查集变形)
- POJ2492--A Bug's Life--并查集
- HDU 1829 A Bug's Life【种类并查集】
- POJ2492(A Bug's Life) && POJ1703(Find them, Catch them)带权(种类)并查集