#include<bits/stdc++.h>
using namespace std;
struct node{
int a,b,c;
}s[5050];
int n,m;
int pre[1010];
bool cmp(node p1,node p2){
return p1.c <p2.c ;
}
void init(){
for(int i=1;i<=n;i++){
pre[i]=i;
}
}
int find(int x){
int r=x;
while(pre[r]!=r)
r=pre[r];
return r;
}
void un(int a,int b){
int x=find(a);
int y=find(b);
if(x==y) return;
else{
pre[x]=y;
}
}
int main()
{
while(cin>>n>>m){
if(n==0) break;
init();
int k=0;
for(int i=1;i<=n;i++){
cin>>s[i].a >>s[i].b >>s[i].c ;
}
sort(s+1,s+1+n,cmp);
int v=0;
for(int i=1;i<=n;i++){
if(find(s[i].a )!=find(s[i].b )){
v+=s[i].c ;
un(s[i].a ,s[i].b );
k++;
}
}
if(k==m-1) cout<<v<<endl;
else cout<<"?"<<endl;
}
return 0;
}
hdu1863
最新推荐文章于 2021-07-28 09:58:37 发布