文章

1

粉丝

23

获赞

1

访问

1.3k

头像
Jungle Roads 题解:
推荐阅读
P1234 北京大学机考题
发布于2024年9月4日 15:54
阅读数 1.3k

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

const int maxn=27+5; // 定义最大节点数

struct Edge{
    int u,v,w; // 边的结构体,包含起点u,终点v和权重w
}edge[maxn*maxn];

int fa[maxn*maxn]; // 并查集数组,用于存储每个节点的父节点

// 并查集的查找函数,用于找到节点x的根节点
int find(int x){
    if(fa[x]==x) return x;
    fa[x]=find(fa[x]);
    return fa[x];
}

// 比较函数,用于排序边,按照权重从小到大排序
int cmp(Edge a,Edge b){
    return a.w<b.w;
}

int main(){
    int n;
    while(cin>>n){
        if(n==0) break; // 如果输入的n为0,则结束程序
        char cu;
        int l;
        int p=0;
        for(int i=0;i<maxn*maxn;i++) fa[i]=i; // 初始化并查集数组
        for(int i=0;i<n-1;i++){
            cin>>cu>>l; // 读取起点字符和边的数量
            int u=int(cu); // 将字符转换为对应的整数
            for(int i=0;i<l;i++){
                char cv;
                cin>>cv>>edge[p].w; // 读取终点字符和权重
                int v=int(cv); // 将字符转换为对应的整数
                edge[p].u=u;
                edge[p].v=v;
                ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发