Time Limit: 3000 MS    Memory Limit: 131072 K

Description

据说 你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过六个人你就能够认识任何一个陌生人。现在有n个互不认识的人
对于这一群人 我们要实现两个操作1.介绍两个人互相之间认识,由于这n个人都非常热情好客 他们会介绍所有自己认识的人给对方 也会介绍给所有对方认识的人也就是说 若 A 和 B 认识 ,C 和 D 认识,若我们介绍A和C认识 那么B和D也会互相认识
2.询问 某两个人 是否认识对方

Input

为多组数据
第一行为一个数 代表有多少组数据对于每一组数据
第一行有两个数n m 分别代表有多少个人 和 多少个操作
接下来m行
对于每一行的第一个数 为1 或 2 代表当前操作是哪一类操作
若为操作1 则输入两个人a b 对这两个人执行操作1
若为操作2 则输入两个人a b 询问这两个人是否认识
(1<=n,m<=10000)

Output

对于每一个操作二
若认识 输出Yes
否则输出No

Sample Input

2
4 5
1 1 2
1 3 4
1 1 3
2 1 4
2 2 4
6 3
1 1 2
1 3 4
2 1 3

Sample Output

Yes
Yes
No

思路:本题是并查集的模板题,并查集可以用来判断所属团体,或者分析条件冲突(典型的如食物链问题,真假话判断问题),具体的大家可以上网百度。

AC代码:

#include <stdio.h>
#include <iostream>
using namespace std;
const int maxn=10005;int par[maxn],_rank[maxn];void init(int n){for(int i=0;i<=n;i++){par[i]=i;_rank[i]=0;}
}int find(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);
}int main(){int T;scanf("%d",&T);while(T--){int n,m;scanf("%d %d",&n,&m);init(n);int a,b,c;for(int i=0;i<m;i++){cin>>a>>b>>c;if(a==1){unite(b,c);}else{if(same(b,c))printf("Yes\n");else printf("No\n");}}}return 0;
} 

转载于:https://www.cnblogs.com/87hbteo/p/7283386.html

SOJ4480 Easy Problem IV (并查集)相关推荐

  1. D. The Door Problem 带权并查集

    http://codeforces.com/contest/776/problem/D 注意到每扇门都有两个东西和它连接着,那么,如果第i扇门的状态是1,也就是已经打开了,那么连接它的两个按钮的状态应 ...

  2. 【bzoj 入门OJ】[NOIP 热身赛]Problem C: 星球联盟(并查集)

    Problem C: 星球联盟 Time Limit: 4 Sec  Memory Limit: 256 MB Submit: 57  Solved: 15 [Submit][Status][Web ...

  3. gym:Problem A Artwork(并查集思维题)

    20162017-acmicpc-nordic-collegiate-programming-contest-ncpc-2016 Problem A Artwork 题目链接 http://codef ...

  4. The Preliminary Contest for ICPC Asia Xuzhou 2019【B. so easy】(set 解法 与正解 unordered_map+并查集)

    so easy 题目大意 给你两个操作,op=1时,将那个数不可用,op=2时进行查询功能 找到从x开始第一个存在的数 非官方题解 set 内置红黑树,有默认从小到大排序功能,所以我们可以暴力一发,不 ...

  5. Codeforces Contest 1081 problem D Maximum Distance —— 并查集

    Chouti was tired of the tedious homework, so he opened up an old programming problem he created year ...

  6. 线段树分治 ---- CF1217F - Forced Online Queries Problem(假离线 可撤销并查集 + 线段树分治)详解

    题目链接 题目大意 解题思路: 我一开始想到可以用可撤销并查集去维护这种删边加边的操作,但是有个缺点是每次撤销都有把后面的边全部撤销复度是O(n2)O(n^2)O(n2) 首先我们考虑这种动态加边删边 ...

  7. Problem 5 素数筛法+并查集

    $des$ 给定一个长度为 $n$ 的正整数序列 ${a_i }$. 将 ${1,2,...,n}$ 划分成两个非空集合 $S.T$,使得 $gcd(\prod_{i \in S} a_i, \pro ...

  8. CodeForces - 1217F Forced Online Queries Problem(线段树分治+并查集撤销)

    题目链接:点击查看 题目大意:给出 nnn 个点,初始时互相不存在连边,需要执行 mmm 次操作,每次操作分为两种类型: 1xy1 \ x \ y1 x y:如果 (x,y)(x,y)(x,y) 之间 ...

  9. 2019ICPC(徐州) - so easy(并查集+离散化)

    题目链接:点击查看 题目大意:给出一个1~n的序列,然后给出m个操作,每个操作分为下列两种情况: 1 x:让数字x不可用 2 x:查询包括x在内的右侧的第一个可用数字 题目分析:因为n给到了1e9,而 ...

最新文章

  1. 目标检测的常用数据处理方法!
  2. Redis读写分离技术架构解析
  3. ASP.NET空间使用SQLite遇到的麻烦
  4. 色彩空间DCI XYZ转RGB
  5. hive explode
  6. vscode编辑器,自己喜欢的颜色
  7. 方格取数(1)(HDU-1565)
  8. mac 用户 文件夹 权限_WIN7局域网文件分权限共享设置方法
  9. 从曾经的无比辉煌,到如今彻底凉凉,万能充到底经历了什么?
  10. 关于MD5对用户密码不进行明文保存的问题
  11. [转]一个叫你看过后感动想哭的对白
  12. 构建之法:第八次心得
  13. ModelSim仿真实例教程
  14. 从程序员到合格的软件设计师
  15. win10本地策略组脚本
  16. HTTP长连接---requests的长连接
  17. 方正飞鸿智能信息平台产品白皮书(四)
  18. 一文读懂自然语言处理NLP(图解+学习资料)
  19. 正宇丨生活其实很简单,想通了每天都是晴天
  20. Notepad++增加读取二进制文件的功能——HexEditor的所有

热门文章

  1. (一)unity自带的着色器源码剖析之——————UnityShaderVariables.cginc文件
  2. CRC16CCITT算法CcittKermit
  3. html svg文件怎么打开,SVG 在 HTML 页面
  4. Android系统启动流程之-----activity启动流程
  5. 从《国产凌凌漆》看到《头号玩家》,你就能全面了解5G
  6. 卧龙图甄选 | 传统的底蕴,文化的内涵
  7. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  8. 统计学 假设检验(Hypothesis Testing)
  9. 统计推断(一) Hypothesis Test
  10. php手机网页下载文件,php 手机下载 POST 类