开始题意理解有误,看了下别人的理解,发现好坑,开始还有这么多人都做错了,正确率也很低,好尴尬的并查集。
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <map>
using namespace std;
int fa[3100],sum[3100];
int find1(int x)
{
if(x!=fa[x])return find1(fa[x]);
else return x;
}
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
for(int i=1;i<=n;i++)fa[i]=i,sum[i]=0;
int u,v,w;
int cnt=n-1;
for(int i=1;i<=m;i++)
{scanf("%d%d%d",&u,&v,&w);
if(u==v)continue;
sum[u]+=w;
sum[v]+=w;
int a,b;
a=find1(u);
b=find1(v);
if(a!=b)
{
cnt--;
fa[a]=fa[b];
}
}
sort(sum+1,sum+1+n);
if(cnt!=0)printf("0\n");
else printf("%d\n",sum[1]);
}
return 0;
}