CODVES 5929 亲戚

5929 亲戚

时间限制: 1 s    空间限制: 128000 KB    题目等级 : 黄金 Gold

题目描述 Description
若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。

规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。 

输入描述 Input Description
第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。

以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。

接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。

输出描述 Output Description
P行,每行一个’Yes’或’No’。表示第i个询问的答案为“具有”或“不具有”亲戚关系。

样例输入 Sample Input
6 5 3
1 2
1 5
3 4
5 2
1 3
1 4
2 3
5 6

样例输出 Sample Output
Yes
Yes
No

数据范围及提示 Data Size & Hint
题目中已有,不重复解释。

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4
 5 const int MAXN=99999;
 6 int n,m,dad[MAXN],a,b,c,d,q,r1,r2;
 7
 8 int find(int x)
 9 {
10     if(x!=dad[x]) dad[x]=find(dad[x]);
11     return dad[x];
12 }
13
14 void unionn(int q,int p)
15 {
16     dad[r2]=r1;
17 }
18
19 int main()
20 {
21     cin>>n>>m;
22     cin>>q;
23     for(int i=1;i<=n;i++)
24       dad[i]=i;
25     for(int j=1;j<=m;j++){
26         cin>>a>>b;
27         r1=find(a);
28         r2=find(b);
29         if(r1!=r2)
30         unionn(r1,r2);
31     }
32     for(int i=1;i<=q;i++){
33         cin>>c>>d;
34         if(find(c)==find(d))
35         cout<<"Yes"<<endl;
36         else
37         cout<<"No"<<endl;
38     }
39     return 0;
40 }

时间: 2024-12-12 02:14:42

CODVES 5929 亲戚的相关文章

codevs 5929 亲戚

5929 亲戚 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚. 输入描述 Input Description 第一行:三个整数n,m,p,(n<=5000,m<=5000,p<

洛谷——P1551 亲戚

题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚. 输入输出格式 输入格式: 第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系. 以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N

codves 3044 矩形面积求并

codves  3044 矩形面积求并  题目等级 : 钻石 Diamond 题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Description 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行一个数n,表示矩形个数(n<=100) 接下来n行每行4个实数x1,y1,x2,y1(0 <= x1 < x2 <= 100000;0 <= y1 < y2 <= 100000),表示矩形的

2016CCPC东北地区大学生程序设计竞赛 - 重现赛 1008(hdu 5929)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5929 Problem Description Mr. Frog learned a basic data structure recently, which is called stack.There are some basic operations of stack: ? PUSH x: put x on the top of the stack, x must be 0 or 1.? POP

并查集 亲戚

题目描述 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子.如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及.在这种情况下,最好的帮手就是计算机.为了将问题简化,你将得到一些亲戚关系的信息,如Marry和Tom是亲戚,Tom和Ben是亲戚,等等.从这些信息中,你可以推出Marry和Ben是亲戚.请写一个程序,对于我们的关于亲戚关系的提问,以最快的速度给出答案

luoguP1551 亲戚

P1551 亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚. 输入输出格式 输入格式: 第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系. 以下m行:每行两个数Mi,Mj,1<=Mi

关于How,刷墙和亲戚

对于需求而言,最宏观的概念是六字诀: Who->Where->Which->How->End->Effect:谁(Who)在什么地方(Where),对那个对象(Which)做了什么(How),做完了(End),影响是什么(Effect): 在How上面要做的文章是最多的,How其实本质就是场景,操作,数据(对象). 刷墙 只要是被操作的数据就需要考虑是否需要添加状态,比如IMS审批从NPIOT系统中抽调的数据就需要考虑是否需要加状态,防止审批期间物料被移动:不加状态,就代表着

洛谷P1551亲戚 并查集

洛谷P1551亲戚   并查集  按秩合并 + 路径压缩 #include <bits/stdc++.h> using namespace std ; const int N = 5011 ; int fa[N],rk[N] ; int n,m,Q ; inline void init() { for(int i=1;i<=n;i++) fa[ i ] = i,rk[ i ] = 1 ; } inline int find(int x) { if(x==fa[ x ]) return x

极品亲戚

每逢年节,一定会有年轻人给我留言,抱怨家里的极品亲戚.有些是像我一样牛头不对马嘴:有些是出言不逊——你怎么又穿红,你皮肤黑穿红像村姑:有些是内夸不避亲——你堂姐上哈佛了,你要向她学习呀……最讨厌的是,几乎每一位都会问:“你考得怎么样?你有男(女)朋友没?你赚多少……” 年轻人都很想像网上说的那样,冷冷地回一句“关你屁事”,又怕爸妈一巴掌挥过来. 而此刻,我想替所有极品亲戚叫一声:“冤枉啊.” 年纪越大,越知道人的孤单.欢天喜地的时候,你想打电话分享的人没几个:痛不欲生的时候,你有满心的话想说,却