#include <iostream>
#include <algorithm>
#include <cstring>
#include<string>
#include<vector>
#include<cmath>
#include<stack>
#include<queue>
using namespace std;
//int a[10][10]={
// {0,11,IFY,IFY,IFY,9,IFY,IFY,6}, //'A'
// {11,0,10,IFY,IFY,IFY,IFY,IFY,8}, //'B'
// {IFY,10,0,17,IFY,IFY,IFY,IFY,IFY},//'C'
// {IFY,IFY,17,0,9,IFY,IFY,IFY,IFY},//'D'
// {IFY,IFY,IFY,9,0,7,5,8,IFY}, //'E'
// {9,IFY,IFY,IFY,7,0,3,IFY,IFY}, //'F'
// {IFY,IFY,IFY,IFY,5,3,0,IFY,IFY}, //'G'
// {IFY,IFY,IFY,IFY,8,IFY,IFY,0,IFY}, //'H'
// {6,8,IFY,IFY,IFY,IFY,IFY,IFY,0} //'I'
// }
int dis[100];
int vis[100];
int close[100];
void prim(int a[][100],int n,int m){
for(int i=1;i<=n;i++){
dis[i]=a[1][i];
vis[1]=1;
close[i]=1;
}
for(int i=1;i<n;i++){
int min=99999;
int j;
for(int k=1;k<=n;k++){
if(min>dis[k]&&vis[k]==0){
min=dis[k];
j=k;
}
}
cout<<"选择节点:"<<close[j]<<"->"<<j<<endl;
vis[j]=1;
for(int k=1;k<=n;k++){
if(a[j][k]<dis[k]&&vis[k]==0){
dis[k]=a[j][k];
close[k]=j;
}
}
}
}
int main(){
memset(vis,0,sizeof(vis));
memset(close,0,sizeof(close));
int n,m;
cin>>n>>m;
int a[100][100];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=99999;
}
}
int x,y,z;
for(int i=0;i<m;i++){
cin>>x>>y>>z;
a[x][y]=z;
a[y][x]=z;
}
prim(a,n,m);
}
6 10
1 2 6
1 3 1
1 4 5
2 5 3
2 3 5
3 5 6
3 6 4
3 4 4
4 6 2
5 6 6
运行结果: