亲戚

亲戚








Time Limit:   1000MS       Memory Limit:   65535KB
Submissions:   214       Accepted:   82

Description若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。
规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。
Input第一行:三个整数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是否具有亲戚关系。
OutputP行,每行一个’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

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
struct kruskal
{
int a;
int b;
};
const int MAXX = 100000;
int father[MAXX];
int unionsearch(int x)
{
return x==father[x]?x:unionsearch(father[x]);
}
int main()
{
kruskal edge[MAXX];
memset(edge,0,sizeof(kruskal));
int n,l,v;
cin>>l>>n>>v;
for(int i =1; i<=l; i++)
{
father[i] = i;
}
for(int i =1; i<=n; i++)
{
cin>>edge[i].a>>edge[i].b;
}
for(int i =1; i<=n; i++)
{
int fa = unionsearch(edge[i].a);
int fb = unionsearch(edge[i].b);
if(fa !=fb)
{
father[fb] = fa;
}
}
for(int i =1; i<=v; i++)
{
int a,b;cin>>a>>b;
int fa = unionsearch(a);
int fb = unionsearch(b);
if(fa==fb)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}

return 0;
}

亲戚

时间: 2024-10-29 12:20:13

亲戚的相关文章

洛谷——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

并查集 亲戚

题目描述 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子.如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及.在这种情况下,最好的帮手就是计算机.为了将问题简化,你将得到一些亲戚关系的信息,如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

极品亲戚

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

家族/亲戚(relation)

题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定: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,表示Ai

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<

uva 10099 The Tourist Guide nyoj 1019 亲戚来了【单个路线最大流【最短路算法】】

题目:uva 10099 The Tourist Guide nyoj 1019 亲戚来了 题意:给出一个无向图,每条路有一个容量.从 s 到 t 的一条最大的流量. 分析:这个题目可以用最短路的算法来做,最短路是求从 s 到 t 的最短路,这里是求从 s 到 t 的最小容量.最短路的三种算法都可以. nyoj的使我们比赛的题目,有坑,图有重边,要处理,还有s可能等于t. spfa代码: #include <cstdio> #include <iostream> #include

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<