Poj 1703 / Poj 1182 并查集二题
2011-08-15 10:46
260 查看
题目链接:http://poj.org/problem?id=1703
http://poj.org/problem?id=1182
比较明显的并查集,也是并查集的深层应用,这两个题除了维护结点的集合外,另外维护结点到其父节点的向量,根据向量值来判断关系。
Code:
1703
http://poj.org/problem?id=1182
比较明显的并查集,也是并查集的深层应用,这两个题除了维护结点的集合外,另外维护结点到其父节点的向量,根据向量值来判断关系。
Code:
1703
#include<stdio.h> #include<stdlib.h> #define M 100008 int set[M]; int vec[M]; int n,m; char list[][24]={"Not sure yet.","In different gangs.","In the same gang."}; void Init() { int i; for(i=0;i<=n;i++) set[i]=i,vec[i]=0; } int Set(int r) { int t; if(r!=set[r]){ t=Set(set[r]); vec[r]=vec[r]^vec[set[r]]; set[r]=t; } return set[r]; } int Query(int x,int y) { int a=Set(x); int b=Set(y); if(a==b) return (vec[x]^vec[y])?1:2; return 0; } void Updata(int x,int y) { int a=Set(x); int b=Set(y); set[a]=b; vec[a]=1^vec[x]^vec[y]; } int main() { int t; int a,b; char op[2]; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); Init(); while(m--){ scanf("%s%d%d",op,&a,&b); switch(op[0]){ case 'A':puts(list[Query(a,b)]);break; case 'D':Updata(a,b);break; } } } return 0; }
相关文章推荐
- POJ 1703 && poj 1182【典型并查集】
- POJ 1703 1182 2492 一类并查集题目-(类别偏移量)
- POJ 1703 1182 2492 并查集 偏移
- 并查集初学(4)向量思维 POJ1182(食物链)&& POJ1703
- POJ 1182 1703 并查集的应用
- poj 1703 , hdu 1729 , poj 1182 并查集偏移量应用
- 《挑战程序设计竞赛》2.4.2 数据结构-并查集 POJ1182 2236 1703 AOJ2170
- POJ1703 && POJ2942 &&POJ 1182 并查集 这个做法挺巧妙
- 《挑战程序设计竞赛》2.4 数据结构-并查集 POJ1182 2236 1703 AOJ2170
- POJ1182 食物链(并查集)
- poj 1703 poj1182(并查集)
- poj1703(种类并查集)
- poj 1182 食物链 并查集
- POJ 1182食物链(经典的并查集)
- POJ 1703 Find them, Catch them [数据结构-并查集 union-find sets]
- poj 1703 Find them, Catch them (分组并查集 偏移向量实现)
- POJ 1703 带权并查集
- POJ1182-并查集
- poj 1182 深入并查集
- 并查集变式 POJ 1703 Find them,Catch them