文章

25

粉丝

0

获赞

27

访问

1.4k

头像
Jungle Roads 题解:Kruskal
P1234 北京大学机考题
发布于2026年2月22日 18:21
阅读数 25

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

struct edge{
    int u,v,w;
}edges[maxn*maxn];
bool compare(edge a,edge b){
    return a.w<b.w;
}

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

int n,t;
int main(){
    while(cin>>n&&n!=0){
        int m=0,sum=0;
        for(int i=0;i<n;i++){
            fa[i]=i;
        }
        for(int i=0;i<n-1;i++){
            char c1;
            int j;
            cin>>c1>>j;
            while(j--){
                char c2;
                cin>>c2>>edges[m].w;
                edges[m].u=c1-'A';edges[m].v=c2-'A';
                m++;
            }
        }
        sort(edges,edges+m,compare);
        for(int i=0;i<m;i++){
            int fx=find(edges[i].u);
            int fy=find(edges[i].v);
            if(fx!=fy){
                fa[fy]=fx;
                sum+=edges[...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发