1389:亲戚

简介: 1389:亲戚

1389:亲戚

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

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

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

【输入】

第一行:三个整数n,(n≤100,000,m≤200,000),分别表示有n个人,m个信息。

以下m行:信息包含两种形式:

M a b:表示a和b具有亲戚关系。

Q a:要求输出a所在家族的人数。

【输出】

要求输出a所在家族的人数。

【输入样例】

5 10

M 3 2

Q 4

M 1 2

Q 4

M 3 2

Q 1

M 3 1

Q 5

M 4 2

Q 4

【输出样例】

1

1

3

1

4

 

1. //示例代码
2. #include <iostream>
3. #include <cstdio>
4. using namespace std;
5. 
6. const int N=1e5+10;   // 定义常量 N,表示数组大小
7. int n,m;
8. int f[N],num[N];  // 数组 f 和 num 分别存储父节点和节点数量
9. 
10. // 并查集中的查找操作,实现路径压缩
11. int find(int x){
12. if(f[x]==x) return f[x];
13. return f[x]=find(f[x]);
14. }
15. 
16. int main()
17. {
18. scanf("%d %d",&n,&m);   // 输入节点数和操作数
19. for(int i=1;i<=n;i++){  // 初始化并查集,每一个节点是其自己的祖先,并且节点数量为 1.
20.         f[i]=i;num[i]=1;
21.     }
22. int a,b;
23. char c[2];
24. for(int i=1;i<=m;i++){   // 进行一些操作。可以对每个节点进行合并或查询。
25. scanf("%s",c);
26. if(c[0]=='M'){      // 如果是合并操作,在输入两个整数A、B,表示要合并的节点。
27. scanf("%d %d",&a,&b);
28. int x=find(a);
29. int y=find(b);
30. if(x==y) continue;
31.             f[y]=x;
32.             num[x]+=num[y];
33.         }
34. else if(c[0]=='Q'){   // 如果是查询操作,输入一个节点 A,输出该节点所在的连通块中的节点数量。
35. scanf("%d",&a);
36. int x=find(a);
37. printf("%d\n",num[x]);
38.         }
39.     }
40. return 0;
41. }


相关文章
|
Python
妹妹们坐船头,哥哥们岸上走
妹妹们坐船头,哥哥们岸上走
112 0
献给每一位母亲
母 亲节,就不发技术相关专业的长篇大论了,来点抒情的。
140 0
献给每一位母亲
A计划救公主
可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。
187 0
伤心者
凄凄岁暮风,翳翳经日雪。 哀生之须臾,羡蛤之无穷。 遇旷烁古今之作,心神为之吸引。 遂引书而坐,俯首细看。 文名“伤心者”,意为悲苦凄凉之人。 作者名“何夕”,引自“人生不相见,动如参与商。
1024 0
【智力题】有多少残疾士兵?
有100个残疾兵.其中70名失去一只眼,75兵失去一只耳,80名失去一只手,85名失去一只脚。问:同时失去眼,耳,手,脚的兵至少有多少人?(可以有其他种类的残疾)答案:10人。(70+75-100+80-100+85-100)
985 0
我的女儿二三事(八)
今天周五了,思来想去,好久没有写点女儿的故事了。索性再来一篇。 - 孩子对爸的态度 - 我如果平时上班早一些,她要么还在睡觉,要不就在玩自己的,在我出门前抬头看看我,冲我摆摆手说,”爸爸再见“,然后继续玩。
997 0
|
程序员 数据安全/隐私保护
想谈恋爱?来对个暗号先!
在这个科技高度发达让人惊叹的时代,程序员用什么方式说爱?烛光晚餐和礼物玫瑰固然不可缺,但摩斯密码这么高智商的表白方式程序猿们依然能手到擒来,这种酷酷的表白方式,你还不快来围观?
8185 0
觉得自己牛逼,就不要去打工
有关程序猿职场生涯的文章,应该能上首页吧? 赌咒发誓,要是再被移出首页,一辈子不在博客园写一个字! 你看,这就是自己心虚。要是我真牛逼,一字千金,到处都在求我的文,我鸟都不鸟博客园,哪里会这幅泼皮模样?   窃以为,王垠也差不多。
1619 0
和幼师谈恋爱的日常,要亲亲要抱抱要举高高
                       教师和程序员搭配指数: 幼儿园老师都是甜美温柔的,不管对小朋友还是家长说话都是甜甜糯糯的。 找女朋友要找幼师的五大理由: 1、幼儿园教师最具爱心 幼儿园教师承担的学前教育任务是家庭教育的延伸和补充,又是义务教育的前奏和铺垫,她们是爱的施与者,施与孩子爱,又教会孩子们感受爱,懂得爱,付出爱,是除了妈妈之外这世上最有爱心的人。
5305 0
|
程序员
致程序媛们的一封信
都说程序猿是一种神奇的物种,那么在这个阳盛阴衰集体中,程序媛似乎就变得更加神秘了~本文是一位女程序员在CSDN论坛上发表的帖子,据说男程序员也纷纷跑来点赞。其实,IT技术圈的性别歧视或许未必真的存在,只不过女生往往不会喜欢这样的工作,但是如果你真的喜欢写代码,那么请深爱这个行业吧。
2267 0