复习2【并查集】
HDU 1232 裸的并查集
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <bits/stdc++.h>using namespace std;const int maxn = 1000 + 10;int fa[maxn];int find(int x) { return fa[x] == x ? x: fa[x] = find(fa[x]);}int main() { int n, m, x, y; while(~scanf("%d%d",&n, &m) && n) { for(int i = 1; i <= n; i++) fa[i] = i; int cur = 0; while(m--) { scanf("%d%d",&x, &y); int fx = find(x); int fy = find(y); if(fx != fy) fa[fx] = fy, cur++; //并了cur次 } printf("%d\n",n - 1 - cur); }} |

浙公网安备 33010602011771号