题目链接:http://poj.org/problem?id=1703

题意:两个坏蛋属于不同的组织,给出两个坏蛋判定是否一个组织。

题解:已知每次输入的两个帮派人员 x, y; 合并 (x, y + N), (x + N, y)。判定时,如果 (x, y) 属于同一个 根,就是同一个组织,(x, y+N) 属于同一个根,则说明是不同组织。不确定则无解。

#include <iostream>
using namespace std;const int maxn = 100000*2 + 20;
int Rank[maxn], par[maxn];
void solve();void init(const int& n) {for (int i = 0; i < n; i++) {par[i] = i;Rank[i] = 0;}
}int find(const 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];}}
}bool same(int x , int y)
{return find(x) == find(y);
}void solve()
{int T, N, M;int x, y;char cmd;scanf("%d", &T);while (T--){scanf("%d%d", &N, &M);init(N * 2);getchar();        while (M--) {    //忽略每次输入后的回车符 scanf("%c%d%d%*c", &cmd, &x, &y);    //检查 if (cmd == 'A') {if (same(x, y)) {printf("In the same gang.\n");}else if (same(x, y + N)) {printf("In different gangs.\n");}else {printf("Not sure yet.\n");}}else {//合并 (x, y+N) 或 (x+N, y) unite(x, y + N);unite(x + N, y);}}}}int main()
{solve();return 0;
}

转载于:https://www.cnblogs.com/douzujun/p/6868902.html

并查集:POJ No1703 Find them, Catch them相关推荐

  1. 【转】并查集MST题集

    转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 ...

  2. POJ 1703 Find them, Catch them(并查集高级应用)

    POJ 1703 Find them, Catch them(并查集高级应用) 手动博客搬家:本文发表于20170805 21:25:49, 原地址https://blog.csdn.net/sunc ...

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

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

  4. POJ 1703 Find them, Catch them(路径压缩并查集)

    POJ 1703 Find them, Catch them(路径压缩并查集) 2014年03月11日 20:13:54 阅读数:881 POJ 1703 Find them, Catch them( ...

  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. POJ1703 Find them, Catch them 并查集

    点击打开链接 Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 50757   Ac ...

  8. 【POJ】1308 Is It A Tree?((并查集 + set)or (map))

    http://poj.org/problem?id=1308 这个题数组开到200就可以了,但题目中貌似没有说呢? 读入每一对顶点,看看他们是否在同一个集合中,如果是的话,肯定成环,不是一棵树. 用s ...

  9. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

最新文章

  1. python语言能做什么软件-什么是Python语言,Python语言可以用来做什么?
  2. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
  3. Sympy含pi等表达式转浮点数形式
  4. Python并发编程之多进程(一)
  5. day11-元组与字典
  6. java 普通类获取session_如何在Java的普通类中获取Session以及request对象
  7. JAVA构造函数是不是封装_Java 封装与构造函数
  8. java socket 工具_java Socket简易聊天工具
  9. python二维数据读取对齐_python代码要严格对齐
  10. 履带式机器人与轮式机器人的异同分析
  11. Rosalind工具库:使用EMBOSS处理生物数据
  12. 在写csdn博客时,如何实现用超链接进行页面内跳转?
  13. FreeCAD 导出STL格式文件格式
  14. 计算机考研去航空专业,北京航空航天大学计算机专业考研方向有哪些?
  15. linux cups用户名密码,Linux下使用CUPS提供打印服务
  16. C语言|计算流逝后的时间
  17. golang隐藏window系统下自身cmd窗口
  18. 「视频」迪士尼研发机器人皮肤,能做个大白吗?
  19. Python 输入一个整数,将他转换为数字金字塔和 * 金字塔
  20. 实战 Vue 之配置多页面应用

热门文章

  1. 的有效 海思编码_【最佳案例展示】2020年CUVA“超高清视频创新产品与解决方案”全球首款8K@120解码芯片海思Hi3796CV300...
  2. android bitmap 获取像素点 太慢_Drawable与 Bitmap 转换总结
  3. 牛客编程巅峰赛S2第7场 - 钻石王者
  4. java 守护线程 作用_java中守护线程的一些概念和用法
  5. neo4j︱图数据库基本概念、操作罗列与整理(一)
  6. 评《货币战争》:问苍茫大地谁主沉浮? 第一次转这样的帖子
  7. Codeforces Round #161 (Div. 2) B. Squares
  8. 信号量实现环形buff下多生产者多消费者模型
  9. 路长全讲座免费在线学习 免费下载
  10. Web 2.0下一个版本是什么 3.0就要到来了吗?