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