题目大意:在这个城市里有两个黑帮团伙,现在给出N个人,问任意两个人他们是否在同一个团伙
输入D x y代表x于y不在一个团伙里

输入A x y要输出x与y是否在同一团伙或者不确定他们在同一个团伙里

解题思路:这道题是一道很经典的种类并查集,除了有father[i]表示父亲节点外,还有rank[i]表示节点i与其父亲节点之间的关系,0表示是同类,1表示不同类。在路径压缩的时候要注意更新rank数组,这里的更新方法是向量偏移。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 100005;
int n,m,Fa[maxn],Rank[maxn];    //Rank[i]=1表示与祖先是不同的类,0表示相同类int find(int x)
{   if(Fa[x] == x) return x;int tmp = Fa[x];Fa[x] = find(Fa[x]);Rank[x] = (Rank[x] + Rank[tmp]) % 2;return Fa[x];
}int main()
{int t,a,b,x,y;char str[2];scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i = 1; i <= n; i++) Fa[i] = i, Rank[i] = 0;for(int i = 1; i <= m; i++){scanf("%s",str);scanf("%d%d",&a,&b);x = find(a);y = find(b);if(str[0] == 'A'){if(x != y)printf("Not sure yet.\n");else{if(Rank[a] == Rank[b])printf("In the same gang.\n");else printf("In different gangs.\n");}}else{if(x == y) continue;Fa[y] = x;Rank[y] = (Rank[a] - Rank[b] + 1 + 2) % 2;}}}return 0;
}

poj 1703(种类并查集)相关推荐

  1. Poj(1703),种类并查集

    题目链接:http://poj.org/problem?id=1703 已经不是第一次接触种类并查集了,直到今天才搞懂. 感谢红黑联盟,感谢杰哥!!! 每个节点只要关系确定,不管是不是同一个集合里面, ...

  2. C - BLG POJ - 1417 种类并查集加dp(背包)

    思路:刚看这道题感觉什么都不清楚,人物之间的关系一点也看不出来,都不知道怎么写,连并查集都没看出来,但是你可以仔细分析一下,当输入字符串为"yes"的时候,我们设输入的值为x和y, ...

  3. POJ - 2492 种类并查集

    思路:保存每个点与其父节点的关系,注意合并和路径压缩即可. AC代码 #include <cstdio> #include <cmath> #include <cctyp ...

  4. 【POJ - 1703】Find them, Catch them(带权并查集之--种类并查集 权为与父节点关系)

    题干: Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36176   Accep ...

  5. Find them, Catch them POJ - 1703(种类并查集)

    题意: 在这个城市里有两个黑帮团伙,现在给出N个人,问任意两个人他们是否在同一个团伙 1.输入D x y代表x于y不在一个团伙里 2.输入A x y要输出x与y是否在同一团伙或者不确定他们在同一个团伙 ...

  6. POJ 1703 Find them, Catch them 种类并查集

    题意 给出一堆点和关系 D为两点不同集合 A为查询两点是否不同集合 n<=1e5 code #include<cstdio> #include<iostream> #in ...

  7. POJ1182 食物链---(经典种类并查集)

    题目链接:http://poj.org/problem?id=1182 食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: ...

  8. POJ1984 Navigation Nightmare —— 种类并查集

    题目链接:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K T ...

  9. BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]

    题意: 朋友的朋友是朋友,敌人的敌人是朋友:朋友形成团伙,求最多有多少团伙 种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立! 所以拆点做吧 #include ...

最新文章

  1. EFQRCode:自动生成花式二维码
  2. python入门基础代码图-python入门基础知识(代码)
  3. main 函数内的变量是全局变量,还是局部变量?
  4. 东莞与华为共建国家新型智慧城市建设示范区
  5. xpath IE 7
  6. PIL应用之生成验证码图片
  7. python networkx包,使用Python中NetworkX包绘制深度神经网络结构图
  8. linux c中的文件描述符与打开文件之间的关系
  9. css中的em 简单教程 -- 转
  10. ++[[]][+[]]+[+[]] == 10 //true
  11. mysql存储数组类型的数据_mysql中怎么存储数组
  12. 如何自定义Mac 启动台每页的排列数量?
  13. Docker 三剑客之 Docker Swarm
  14. 老男孩linux——36期学员
  15. 前端用户体验提升系列(一)最常见的用户体验指标和提升方式
  16. android killer使用方法,AndroidKiller安装、设置及使用教程
  17. Amlogic 4K UI显示
  18. python包:scikit-learn
  19. 网络资源计算机教学设计,第11课 网络资源任我搜 教案
  20. 天河二号超级计算机能买到吗,天河二号计算机是巨型机吗

热门文章

  1. 一篇讲清:数据采集中的安全与隐私
  2. 线下零售企业在数据驱动上的三个挑战和三条思路
  3. 失战于知识付费,会员与智能硬件将助蜻蜓FM打赢下半场战争?
  4. ThreadPoolExecutor的execute源码分析
  5. 朴素贝叶斯(naive bayes)
  6. 【VMCloud云平台进阶篇】Monitor监控(一)
  7. C#-微信公众平台接口-上传临时素材
  8. mysql通过字段凝视查找字段名称
  9. Reat学习01——初步接触与安装
  10. 什么东西都要用一句话总结出来:这是最重要的