文章

85

粉丝

0

获赞

502

访问

10.3k

头像
并查集模版
P1319 浙江大学机试题
发布于2026年3月7日 16:13
阅读数 55

#include <bits/stdc++.h>
using namespace std;

const int maxn =1005;
int fa[maxn];

int find(int x) {
    if (x == fa[x]) {
        return x;
    }
    fa[x] = find(fa[x]);
    return fa[x];
}

int main() {
    int N,M;
    while (cin >> N ) {
        if (N==0) {
            break;
        }
        cin >> M;
        int sum = 0;
        for (int j=1; j<=N; j++) {
            fa[j] =j;
        }
        for (int i = 0; i < M; i++) {
            int x,y;
            cin >> x >> y;
            int fx = find(x);
            int fy = find(y);
            if (fx != fy) {
                fa[fx] = fy;
                sum++;
            }
        }
        cout << N-sum-1 << endl;
    }
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发