【POJ】[1703]Find them, Catch them
2016-03-18 23:21
330 查看
并查集的运用
不过这里告诉的是两个人不同组
所以可以仿照食物链那一个
把x+n与y及x与y+n合并
最后只需要检测 x与y 或 x+n与y+n
是否同组就好了
#include<stdio.h> int par[200200],rank[200200]; int find(int x) { if(par[x]==x) return x; else return par[x]=find(par[x]); } void unite(int x,int y) { x=find(x); y=find(y); if(x==y) return; if(rank[x]<rank[y]) par[x]=y; else { par[y]=x; if(rank[x]==rank[y]) rank[x]++; } } int main() { int T; scanf("%d",&T); while(T--) { int n,m; scanf("%d %d",&n,&m); getchar(); for(int i=1; i<=2*n; i++) { par[i]=i; rank[i]=0; } while(m--) { char c; int x,y; scanf("%c %d %d",&c,&x,&y); getchar(); if(c=='D') { unite(x,y+n); unite(x+n,y); } else if(c=='A') { if(find(x)==find(y)||find(x+n)==find(y+n)) printf("In the same gang.\n"); else if(find(x)==find(y+n)||find(x+n)==find(y)) printf("In different gangs.\n"); else printf("Not sure yet.\n"); } } } return 0; }
题目地址:【POJ】[1703]Find them, Catch them
相关文章推荐
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1001
- POJ ACM 1002
- 1611:The Suspects
- POJ1089 区间合并
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points
- POJ-2409-Let it Bead&&NYOJ-280-LK的项链
- POJ-1695-Magazine Delivery-dp
- POJ1523 SPF dfs
- POJ-1001 求高精度幂-大数乘法系列
- POJ-1003 Hangover
- POJ-1004 Financial Management
- 用单调栈解决最大连续矩形面积问题
- 2632 Crashing Robots的解决方法
- 1573 Robot Motion (简单题)
- HDU-1213-How Many Tables
- POJ——3253 Fence Repair