HDU 1232 并查集模板题

来源:互联网 发布:健康网络的宣传语 编辑:程序博客网 时间:2024/04/29 16:37
<pre name="code" class="cpp">#include <bits/stdc++.h>using namespace std;int M, N, *pre, a, b, cnt;void init(){pre = new int[M+5];for (int i = 1; i <= M; i++)pre[i] = i;}int find(int x){if (x != pre[x]) pre[x] = find(pre[x]);return pre[x];}void Iunion(int x, int y){x = find(x);y = find(y);if (x != y) pre[x] = y, --cnt;}int main(int argc, char const *argv[]){while (cin >> M && M){cin >> N;cnt = M - 1;init();while (N--){cin >> a >> b;Iunion(a, b);}delete[] pre;cout << cnt << endl;}return 0;}
居然又错了一遍,从1开始,应该申请到n+1
0 0
原创粉丝点击