SOJ4480 Easy Problem IV (并查集)
- 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=;
- int par[maxn],_rank[maxn];
- void init(int n){
- for(int i=;i<=n;i++){
- par[i]=i;
- _rank[i]=;
- }
- }
- 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=;i<m;i++){
- cin>>a>>b>>c;
- if(a==){
- unite(b,c);
- }else{
- if(same(b,c))printf("Yes\n");
- else printf("No\n");
- }
- }
- }
- return ;
- }
SOJ4480 Easy Problem IV (并查集)的更多相关文章
- Codeforces 954I Yet Another String Matching Problem(并查集 + FFT)
题目链接 Educational Codeforces Round 40 Problem I 题意 定义两个长度相等的字符串之间的距离为: 把两个字符串中所有同一种字符变成另外一种,使得两个 ...
- ZOJ - 3761 Easy billiards 【并查集+DFS】
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3761 题意 在一个桌面上,给出一些球 如果在A球的某个方向的前方 ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 B. so easy (unordered_map+并查集)
这题单用map过不了,太慢了,所以改用unordered_map,对于前面删除的点,把它的父亲改成,后面一位数的父亲,初始化的时候,map里是零,说明它的父亲就是它本身,最后输出答案的时候,输出每一位 ...
- poj1182 食物链(并查集 好题)
https://vjudge.net/problem/POJ-1182 并查集经典题 对于每只动物创建3个元素,x, x+N, x+2*N(分别表示x属于A类,B类和C类). 把两个元素放在一个组代表 ...
- Aizu2170 Marked Ancestor(并查集)
https://vjudge.net/problem/Aizu-2170 并查集用于管理元素分组情况. 建树pre[]记录父节点,一开始只有结点1被标记了,所以find()最终得到的根都是1. 如果遇 ...
- 并查集&线段树&树状数组&排序二叉树
超级无敌巨牛逼并查集(带权并查集)https://vjudge.net/problem/UVALive-4487 带删点的加权并查集 https://vjudge.net/problem/UVA-11 ...
- 【CodeForces - 1167C 】News Distribution(并查集)
News Distribution 题意 大概就是分成几个小团体,给每个人用1 - n编号,当对某个人传播消息的时候,整个小团体就知道这个消息,输出 分别对1 - n编号的某个人传递消息时,有多少人知 ...
- Brain Network (easy)(并查集水题)
G - Brain Network (easy) Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem C (Codeforces 828C) - 链表 - 并查集
Ivan had string s consisting of small English letters. However, his friend Julia decided to make fun ...
随机推荐
- 从websphere6.1迁移到weblogic10.3的问题总结--转
http://blog.itpub.net/9399028/viewspace-692974/ 以前用weblogic低版本的时候,感觉挺容易的,也没什么要注意的,这次真正把应用从websphere迁 ...
- 关于android studio2.3和android studio3.0
今天又重新把androidstudio2.3重新装上了,实在是受不了android studio3.0了,太恶心人了 说一下为何改用android studio3.0: 优点: 1. 如果只是写纯应用 ...
- jvm options
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#Options Categories of J ...
- PHP学习7——文件系统
主要内容: 打开和关闭文件 文件类型 文件处理 目录处理 访问远程文件 文件锁定 文件上传 数据除了可以存储在数据库中,我们主要的还是存储在文件中,而且存储在文件中更加的方便直接. 打开和关闭文件 打 ...
- html空白文字宽度
原文链接 名称 编号 描述 不断行的空白(1个字符宽度) 半个空白(1个字符宽度) 一个空白(2个字符宽度) 窄空白(小于1个字符宽度) 小写加分号!
- 流畅的python和cookbook学习笔记(三)
1.双向队列 collections.deque 类(双向队列)是一个线程安全.可以快速从两端添加或者删除元素的数据类型. rotate和popleft操作,rorate可以把前后元素换位.pople ...
- JDBC编程错误:Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)
出现上面的错误是因为连接数据库的用户名不对或密码赋值不对,请对用户名和密码进行检查. 或者在程序中没有获取到正确的用户名或密码.看是否少写了用户名或密码.
- Android xmlns 的作用及其自定义
转自:http://blog.csdn.net/chuchu521/article/details/8052855 xmlns:Android="http://schemas.android ...
- CAP理论-解析
分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值.(等同于所有节点访问同一份最新的数据副本) ...
- div居中方式
1. position: absolute; top:50%:left: 50%; margin-top: -高度的一半; margin-left: -宽度的一半(此方法适用于固定宽高的元素) 注: ...