文章

85

粉丝

0

获赞

554

访问

11.8k

头像
继续畅通工程 题解:kruskal算法 1时加入并查集0时创建待选节点 模板变形
P1311 浙江大学机试题
发布于2026年3月7日 18:15
阅读数 95

#include <bits/stdc++.h>
using namespace std;
const int Max = 105;

int fa[Max];

struct node {
    int u,v,w;
};
int find(int x) {
    if (fa[x]== x) {
        return x;
    }
    fa[x] = find(fa[x]);
    return fa[x];
}

void myunion(int a ,int b){
    fa[find(a)] = find(b);
}

bool cmp(node a,node b) {
    return a.w<b.w;
}
int main() {
    int N;
    while (cin>>N) {
        if (N == 0) {
            break;
        }
        for (int i=1;i<=N;i++) {
            fa[i] = i;
        }
        int dataline = N*(N-1)/2;
        vector<node> nodes;
        while (dataline--) {
            int u,v,w,state;
            cin>>u>>v>>w>>state;
            if (state==1) {
                myunion(u,v);
                continue;
            }
            if (state==0) {
                nodes.push_back({u,v,w});
            }
        }

        int sum = 0;
        sort(nodes.begin(), nodes.end(), ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发