#include<iostream>
using namespace std;
const int inf = 999999999;
int graph[5005][5005];
int dist[5005];
bool vis[5005];
void init(int n)
{
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
if(i==j) graph[i][j]=0;
else graph[i][j]=inf;
}
}
}
int prim(int n)
{
int ans=0;
int order;
for(int i=1;i<=n;++i)
{
dist[i]=graph[1][i];
}
vis[1]=1;
for(int i=1;i<n;++i)
{
int minn=inf;
for(int j=1;j<=n;++j)
{
if(!vis[j]&&dist[j]<minn)
{
minn=dist[j];
order=j;
}
}
ans+=minn;
vis[order]=1;
for(int j=1;j<=n;++j)
{
if(!vis[j]&&dist[j]>graph[order][j])
{
dist[j]=graph[order][j];
}
}
}
return ans;
}
int main()
{
int n,m;
int p1,p2,value;
cin>>n>>m;
init(n);
for(int i=1;i<=m;++i)
{
cin>>p1>>p2>>value;
graph[p1][p2]=value;
graph[p2][p1]=value;
}
cout<<prim(n)<<endl;
return 0;
}
全wa了,请大佬们帮忙看看,多谢。