洛谷 P1551 亲戚(并查集模板)

嗯...

 

题目链接:https://www.luogu.org/problemnew/show/P1551

 

思路:

很显然地我们会发现,这是一道并查集的模板题,并且是考察了并查集中的”并“和”查“的操作(好像所有关于亲戚的题都与并查集有关...

然后就是一个并查集的模板了,可以尝试记住(亏自己先会了最小生成树...

 

AC代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 
 4 using namespace std;
 5 
 6 int f[10000005];
 7 int a, b, c, d;
 8 
 9 inline int find(int x){
10     if(f[x] != x)
11         f[x] = find(f[x]);
12     return f[x];
13 } //“查”操作 
14 int main(){
15     int n, m, p;
16     scanf("%d%d%d", &n, &m, &p);
17     for(int i = 1; i <= n; i++)
18         f[i] = i;
19     for(int i = 1; i <= m; i++){
20         scanf("%d%d", &a, &b);
21         int r1 = find(a);
22         int r2 = find(b);
23         if(r1 != r2) 
24             f[r1] = r2; //“并”操作 
25     }
26     for(int i = 1; i <= p; i++){
27         scanf("%d%d", &c, &d);
28         int f1 = find(c);
29         int f2 = find(d);
30         if(f1 == f2) printf("Yes\n");
31         else printf("No\n");
32     }
33     return 0;
34 }
AC代码

 

转载于:https://www.cnblogs.com/New-ljx/p/10800945.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值