POJ 2492 (简单并查集) A Bug's Life
2014-09-01 21:40
435 查看
题意:有编号为1~n的虫子,开始假设这种昆虫是异性恋。然后已知xi 和 yi进行交配,根据已知情况分析能否推理出其中是否有同性恋
这道题和 POJ 1182 食物链 十分相似,不过在更新与父节点关系的时候要简单一些
sex数组保存的是与父节点的性别关系,如果与父节点是同性,则为0,否则是1
每次路径压缩的同时要更新sex[a] = (sex[a] + sex[temp]) % 2;
还有就是如果x 和 y 不在一个集合,两棵树进行合并的时候,考虑x px y py 四者之间的关系,有
这个在纸上模拟一下就很容易得出来
在敲代码的过程中还是犯了两个低级的小错误,因为一旦我们发现了存在同性恋,便可以输出结果了,不过要对剩余未读入的数据“忽略”
因为i可能是break出来的,这次循环没有完成,i也没有自增,所以在“忽略”的循环里面,i首先要自增一下
代码君
这道题和 POJ 1182 食物链 十分相似,不过在更新与父节点关系的时候要简单一些
sex数组保存的是与父节点的性别关系,如果与父节点是同性,则为0,否则是1
每次路径压缩的同时要更新sex[a] = (sex[a] + sex[temp]) % 2;
还有就是如果x 和 y 不在一个集合,两棵树进行合并的时候,考虑x px y py 四者之间的关系,有
parent[px] = py; sex[px] = 1 - (sex[x] ^ sex[y]);
这个在纸上模拟一下就很容易得出来
在敲代码的过程中还是犯了两个低级的小错误,因为一旦我们发现了存在同性恋,便可以输出结果了,不过要对剩余未读入的数据“忽略”
因为i可能是break出来的,这次循环没有完成,i也没有自增,所以在“忽略”的循环里面,i首先要自增一下
//#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 2000 + 10;
int parent[maxn], sex[maxn];
int GetParent(int a)
{
if(parent[a] == a) return a;
int temp = parent[a];
parent[a] = GetParent(parent[a]);
sex[a] = (sex[a] + sex[temp]) % 2;
return parent[a];
}
int main(void)
{
#ifdef LOCAL
freopen("2492in.txt", "r", stdin);
#endif
int T, kase;
scanf("%d", &T);
for(kase = 1; kase <= T; ++kase)
{
int n, m, i;
int x, y;
bool flag = false;
scanf("%d%d", &n, &m);
for(int i = 0; i <= n; ++i)
{
parent[i] = i;
sex[i] = 0;
}
for(i = 0; i < m; ++i)
{
scanf("%d%d", &x, &y);
int px = GetParent(x);
int py = GetParent(y);
if(px == py)
{
if(sex[x] == sex[y])
{
flag = true;
break;
}
}
else
{
parent[px] = py; sex[px] = 1 - (sex[x] ^ sex[y]);
}
}
for(++i; i < m; ++i)
scanf("%d%d", &x, &y);
printf("Scenario #%d:\n%suspicious bugs found!\n\n", kase, flag ? "S" : "No s");
//if(kase < T) printf("\n");
}
return 0;
}
代码君
相关文章推荐
- POJ 2492 A Bug's Life【并查集的简单应用同类的判断】
- (简单) POJ 2492 A Bug's Life,二分染色。
- POJ 2492 A Bug's Life (并查集)
- poj 2492 A Bug's Life(并查集)
- POJ 2492 A Bug's Life 并查集的应用
- hdu - 1829 A Bug's Life (并查集)&&poj - 2492 A Bug's Life && poj 1703 Find them, Catch them
- poj 2492 A Bug's Life 并查集
- POJ 2492 A Bug's Life【并查集的简单应用同类的判断】
- POJ 2492 A Bug's Life (并查集应用的扩展)
- POJ2492-A Bug's Life-并查集扩展应用
- poj 2492 A Bug's Life (并查集)
- POJ---2492 A Bug's Life[并查集]
- POJ 2492 A Bug's Life 带权并查集
- poj2492_A Bug's Life_并查集
- POJ 2492 A Bug's Life(并查集)
- POJ 2492 A Bug's Life (并查集)
- POJ 2492 A Bug's Life 简单并查集
- poj2492 A Bug's Life【基础种类并查集】
- POJ 2492 A Bug's Life (并查集)
- poj 2492 A Bug's Life (并查集)