文章
1
粉丝
23
获赞
1
访问
1.4k
#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;
...
登录后发布评论
暂无评论,来抢沙发