hdu-1232 畅通工程---并查集

Posted 努力努力再努力x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu-1232 畅通工程---并查集相关的知识,希望对你有一定的参考价值。

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1232

题目大意:

中文题

解题思路:

直接并查集,判断有多少不同的根节点,答案就是根节点的数目-1,因为还需要建的道路就是根节点之间两两连接即可

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 1000 + 10;
 4 int p[maxn];
 5 int n, m;
 6 set<int>s;
 7 void init()
 8 {
 9     s.clear();
10     for(int i = 0; i < maxn; i++)p[i] = i;
11 }
12 int Find(int x)
13 {
14     return x == p[x] ? x : p[x] = Find(p[x]);
15 }
16 int main()
17 {
18     while(scanf("%d", &n) != EOF && n)
19     {
20         int x, y;
21         init();
22         scanf("%d", &m);
23         while(m--)
24         {
25             scanf("%d%d", &x, &y);
26             p[Find(x)] = Find(y);
27         }
28         for(int i = 1; i <= n; i++)
29         {
30             s.insert(Find(i));
31         }
32         cout<<(s.size() - 1)<<endl;
33     }
34     return 0;
35 }

 

以上是关于hdu-1232 畅通工程---并查集的主要内容,如果未能解决你的问题,请参考以下文章

hdu1232 畅通工程 基础并查集

HDU 1232 畅通工程 (并查集)

hdu-1232 畅通工程

并查集-HDU1232

HDU-1232-通畅工程(并查集)

HDU1232-并查集