并查集
2016-07-19 20:46
357 查看
#include<iostream>#include<algorithm>using namespace std;int r[100005];int p[100005];int n,m;void init(){for(int i=0;i<=n;i++){p[i]=i;r[i]=0;}}int Find(int x){if(x!=p[x]){int k=Find(p[x]);r[x]=(r[x]+r[p[x]])%2;p[x]=k;}return p[x];}void UnionSet(int x,int y,int xx,int yy){p[yy]=xx;r[yy]=(r[x]+1-r[y]+2)%2;}int main(){int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);init();for(int i=0;i<m;i++){char s[10];int x,y;scanf("%s%d%d",s,&x,&y);int xx=Find(x);int yy=Find(y);//cout<<xx<<endl<<yy<<endl;if(s[0]=='A'){if(xx!=yy){printf("Not sure yet.\n");}else{if(r[x]==r[y]){printf("In the same gang.\n");}elseprintf("In different gangs.\n");}}else{if(xx!=yy){UnionSet(x,y,xx,yy);}}}}return 0;}
相关文章推荐
- 《剑指offer》最小的K个数
- 正则匹配全部中文
- hdoj1070Milk(sort+结构体)
- [博弈]SG函数的求法和一些结论 NIM博弈
- 对java web 的mvc 生动讲解
- 矩阵相乘求斐波那契
- 使用android studio 出现Manifest merger failed with multiple errors
- 前端框架集中营
- 作业
- 对拍
- 《SpringMVC数据绑定入门》笔记
- hdu 1159 Common Subsequence(最长公共子序列问题)
- C结构体之位域(位段)
- 某个比赛:Problem H: 1的最少个数
- LCIS
- androidManifest
- 【BZOJ2768】冠军调查,网络流之最小割
- socket05---recv && send使用,回射客户端
- Ffmpeg 定位文件(seek file)
- Bear and Three Balls(sort)