#include <bits/stdc++.h>
using namespace std;
int n,m,mmin,t1,t2,t3;
int e[7777][7777],dis[7777],book[7777]={0};
int inf=9999999;
int main()
{
int cnt=0,ssum=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)
{
e[i][j]=0;
}
else
{
e[i][j]=inf;
}
}
}
for(int i=1;i<=m;i++)
{
cin>>t1>>t2>>t3;
e[t1][t2]=e[t2][t1]=t3;
}
for(int i=1;i<=n;i++)
{
dis[i]=e[1][i];
}
book[1]=1;
cnt++;
int j;
while(cnt<n)
{
mmin=inf;
for(int i=1;i<=n;i++)
{
if(book[i]==0 && dis[i]<mmin)
{
mmin=dis[i];
j=i;
}
}
book[j]=1;
cnt++;
ssum+=dis[j];
for(int k=1;k<=n;k++)
{
if(book[k]==0 && dis[k]>e[j][k])
{
dis[k]=e[j][k];
}
}
}
cout<<ssum<<endl;
return 0;
}
不知道为什么就只对了两组数据,求帮助。(样例数据可以通过)