公路修建
作者:
QWQdcy
,
2021-08-16 16:24:31
,
所有人可见
,
阅读 236
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
const int N = 550, M = 2020;
int n,m;
int k[N][N];
struct node{
int u,v,w;
}e[M];
int p[N];
int find(int x){
if(x!=p[x]) p[x]=find(p[x]);
return p[x];
}
bool cmp(node x,node y){
return x.w<y.w;
}
int main(){
cin >> n >> m;
//for(int i=1;i<=n;i++) p[i]=i;
for(int i=1;i<=m;i++){
cin >> e[i].u >> e[i].v >> e[i].w;
for(int j=1;j<=n;j++) p[j]=j;
double sum=0;
int cnt=0;
sort(e+1,e+i+1,cmp);
for(int j=1;j<=i;j++){
if(find(e[j].u)!=find(e[j].v)){
p[find(e[j].u)]=find(e[j].v);
sum+=e[j].w;
cnt++;
}
}
if(cnt<n-1) cout << "0" << endl;
else cout << setprecision(1) << fixed << sum/2 << endl;
}
return 0;
}