并查集:POJ No1703 Find them, Catch them
题目链接: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相关推荐
- 【转】并查集MST题集
转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 ...
- POJ 1703 Find them, Catch them(并查集高级应用)
POJ 1703 Find them, Catch them(并查集高级应用) 手动博客搬家:本文发表于20170805 21:25:49, 原地址https://blog.csdn.net/sunc ...
- 【POJ - 1703】Find them, Catch them(带权并查集之--种类并查集 权为与父节点关系)
题干: Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36176 Accep ...
- 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( ...
- Find them, Catch them POJ - 1703(种类并查集)
题意: 在这个城市里有两个黑帮团伙,现在给出N个人,问任意两个人他们是否在同一个团伙 1.输入D x y代表x于y不在一个团伙里 2.输入A x y要输出x与y是否在同一团伙或者不确定他们在同一个团伙 ...
- POJ 1703 Find them, Catch them 种类并查集
题意 给出一堆点和关系 D为两点不同集合 A为查询两点是否不同集合 n<=1e5 code #include<cstdio> #include<iostream> #in ...
- POJ1703 Find them, Catch them 并查集
点击打开链接 Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50757 Ac ...
- 【POJ】1308 Is It A Tree?((并查集 + set)or (map))
http://poj.org/problem?id=1308 这个题数组开到200就可以了,但题目中貌似没有说呢? 读入每一对顶点,看看他们是否在同一个集合中,如果是的话,肯定成环,不是一棵树. 用s ...
- 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)
POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...
最新文章
- python语言能做什么软件-什么是Python语言,Python语言可以用来做什么?
- 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
- Sympy含pi等表达式转浮点数形式
- Python并发编程之多进程(一)
- day11-元组与字典
- java 普通类获取session_如何在Java的普通类中获取Session以及request对象
- JAVA构造函数是不是封装_Java 封装与构造函数
- java socket 工具_java Socket简易聊天工具
- python二维数据读取对齐_python代码要严格对齐
- 履带式机器人与轮式机器人的异同分析
- Rosalind工具库:使用EMBOSS处理生物数据
- 在写csdn博客时,如何实现用超链接进行页面内跳转?
- FreeCAD 导出STL格式文件格式
- 计算机考研去航空专业,北京航空航天大学计算机专业考研方向有哪些?
- linux cups用户名密码,Linux下使用CUPS提供打印服务
- C语言|计算流逝后的时间
- golang隐藏window系统下自身cmd窗口
- 「视频」迪士尼研发机器人皮肤,能做个大白吗?
- Python 输入一个整数,将他转换为数字金字塔和 * 金字塔
- 实战 Vue 之配置多页面应用
热门文章
- 的有效 海思编码_【最佳案例展示】2020年CUVA“超高清视频创新产品与解决方案”全球首款8K@120解码芯片海思Hi3796CV300...
- android bitmap 获取像素点 太慢_Drawable与 Bitmap 转换总结
- 牛客编程巅峰赛S2第7场 - 钻石王者
- java 守护线程 作用_java中守护线程的一些概念和用法
- neo4j︱图数据库基本概念、操作罗列与整理(一)
- 评《货币战争》:问苍茫大地谁主沉浮? 第一次转这样的帖子
- Codeforces Round #161 (Div. 2) B. Squares
- 信号量实现环形buff下多生产者多消费者模型
- 路长全讲座免费在线学习 免费下载
- Web 2.0下一个版本是什么 3.0就要到来了吗?