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=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 (并查集)相关推荐
- D. The Door Problem 带权并查集
http://codeforces.com/contest/776/problem/D 注意到每扇门都有两个东西和它连接着,那么,如果第i扇门的状态是1,也就是已经打开了,那么连接它的两个按钮的状态应 ...
- 【bzoj 入门OJ】[NOIP 热身赛]Problem C: 星球联盟(并查集)
Problem C: 星球联盟 Time Limit: 4 Sec Memory Limit: 256 MB Submit: 57 Solved: 15 [Submit][Status][Web ...
- gym:Problem A Artwork(并查集思维题)
20162017-acmicpc-nordic-collegiate-programming-contest-ncpc-2016 Problem A Artwork 题目链接 http://codef ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019【B. so easy】(set 解法 与正解 unordered_map+并查集)
so easy 题目大意 给你两个操作,op=1时,将那个数不可用,op=2时进行查询功能 找到从x开始第一个存在的数 非官方题解 set 内置红黑树,有默认从小到大排序功能,所以我们可以暴力一发,不 ...
- 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 ...
- 线段树分治 ---- CF1217F - Forced Online Queries Problem(假离线 可撤销并查集 + 线段树分治)详解
题目链接 题目大意 解题思路: 我一开始想到可以用可撤销并查集去维护这种删边加边的操作,但是有个缺点是每次撤销都有把后面的边全部撤销复度是O(n2)O(n^2)O(n2) 首先我们考虑这种动态加边删边 ...
- Problem 5 素数筛法+并查集
$des$ 给定一个长度为 $n$ 的正整数序列 ${a_i }$. 将 ${1,2,...,n}$ 划分成两个非空集合 $S.T$,使得 $gcd(\prod_{i \in S} a_i, \pro ...
- CodeForces - 1217F Forced Online Queries Problem(线段树分治+并查集撤销)
题目链接:点击查看 题目大意:给出 nnn 个点,初始时互相不存在连边,需要执行 mmm 次操作,每次操作分为两种类型: 1xy1 \ x \ y1 x y:如果 (x,y)(x,y)(x,y) 之间 ...
- 2019ICPC(徐州) - so easy(并查集+离散化)
题目链接:点击查看 题目大意:给出一个1~n的序列,然后给出m个操作,每个操作分为下列两种情况: 1 x:让数字x不可用 2 x:查询包括x在内的右侧的第一个可用数字 题目分析:因为n给到了1e9,而 ...
最新文章
- 目标检测的常用数据处理方法!
- Redis读写分离技术架构解析
- ASP.NET空间使用SQLite遇到的麻烦
- 色彩空间DCI XYZ转RGB
- hive explode
- vscode编辑器,自己喜欢的颜色
- 方格取数(1)(HDU-1565)
- mac 用户 文件夹 权限_WIN7局域网文件分权限共享设置方法
- 从曾经的无比辉煌,到如今彻底凉凉,万能充到底经历了什么?
- 关于MD5对用户密码不进行明文保存的问题
- [转]一个叫你看过后感动想哭的对白
- 构建之法:第八次心得
- ModelSim仿真实例教程
- 从程序员到合格的软件设计师
- win10本地策略组脚本
- HTTP长连接---requests的长连接
- 方正飞鸿智能信息平台产品白皮书(四)
- 一文读懂自然语言处理NLP(图解+学习资料)
- 正宇丨生活其实很简单,想通了每天都是晴天
- Notepad++增加读取二进制文件的功能——HexEditor的所有
热门文章
- (一)unity自带的着色器源码剖析之——————UnityShaderVariables.cginc文件
- CRC16CCITT算法CcittKermit
- html svg文件怎么打开,SVG 在 HTML 页面
- Android系统启动流程之-----activity启动流程
- 从《国产凌凌漆》看到《头号玩家》,你就能全面了解5G
- 卧龙图甄选 | 传统的底蕴,文化的内涵
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 统计学 假设检验(Hypothesis Testing)
- 统计推断(一) Hypothesis Test
- php手机网页下载文件,php 手机下载 POST 类