poj 2492 A Bug's Life(带权并查集)
2014-04-17 21:57
453 查看
题目链接:A Bug's Life
带权并查集,0表示同性,1表示异性
代码:
#include <stdio.h>
#include <string.h>
const int N = 2005;
int t, n, m, parent
, rank
;
void init() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
parent[i] = i;
rank[i] = 0;
}
}
int find(int x) {
if (x == parent[x])
return x;
int px = find(parent[x]);
rank[x] = ((rank[x] + rank[parent[x]])&1);
return parent[x] = px;
}
bool judge() {
int flag = 0, a, b;
while (m--) {
scanf("%d%d", &a, &b);
int pa = find(a);
int pb = find(b);
if (pa != pb) {
parent[pa] = pb;
if (rank[b] == 0)
rank[pa] = 1 - rank[a];
else
rank[pa] = rank[a];
}
else {
if (rank[a] == rank[b])
flag = 1;
}
}
return flag;
}
int main() {
int cas = 0;
scanf("%d", &t);
while (t--) {
printf("Scenario #%d:\n", ++cas);
init();
if (judge()) printf("Suspicious bugs found!\n");
else printf("No suspicious bugs found!\n");
if (t) printf("\n");
}
return 0;
}
带权并查集,0表示同性,1表示异性
代码:
#include <stdio.h>
#include <string.h>
const int N = 2005;
int t, n, m, parent
, rank
;
void init() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
parent[i] = i;
rank[i] = 0;
}
}
int find(int x) {
if (x == parent[x])
return x;
int px = find(parent[x]);
rank[x] = ((rank[x] + rank[parent[x]])&1);
return parent[x] = px;
}
bool judge() {
int flag = 0, a, b;
while (m--) {
scanf("%d%d", &a, &b);
int pa = find(a);
int pb = find(b);
if (pa != pb) {
parent[pa] = pb;
if (rank[b] == 0)
rank[pa] = 1 - rank[a];
else
rank[pa] = rank[a];
}
else {
if (rank[a] == rank[b])
flag = 1;
}
}
return flag;
}
int main() {
int cas = 0;
scanf("%d", &t);
while (t--) {
printf("Scenario #%d:\n", ++cas);
init();
if (judge()) printf("Suspicious bugs found!\n");
else printf("No suspicious bugs found!\n");
if (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(并查集)
- HDU1829&POJ 2492 a bug's life [并查集||二分图染色]
- poj-2492 -A Bug's Life-并查集的使用
- 【POJ 2492】 A Bug's Life (条件并查集/bfs)
- Hdu 1892&&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 & POJ 2492 A Bug's Life (并查集)
- POJ 2492 A Bug's Life(并查集)
- POJ2492 A Bug's Life (并查集)
- POJ 2492 A Bug's Life (高级并查集||带权并查集 ||二分图的判断+二维vector)
- POJ2492 A Bug's Life (并查集)
- POJ ~ 2492 ~ A Bug's Life (带权并查集)
- POJ2492 A Bug's Life 【并查集】
- poj 2492 A Bug's Life(并查集 染色法 二分图)
- HDU 1829 && POJ 2492 A Bug's Life(种类并查集)