#include<iostream>
using namespace std;
#define MAX 100
#define INF 0x7fffffff
int graph[MAX][MAX];
int prim(int graph[][MAX], int n)
{
int distance[MAX];
int nearest[MAX];
int i, j, sum = 0, min, vnear;
for (i = 2; i <= n; i++)
{
distance[i] = graph[1][i];
nearest[i] = 1;
}
nearest[1] = 0;
for (i = 2; i <= n; i++)
{
min = INF;
for (j = 2; j <= n; j++)
{
if (distance[j] < min&&distance[j] != 0)
{
min = distance[j];
vnear = j;
}
}
cout << 'V' << vnear << "->";
sum += min;
distance[vnear] = 0;
for (j = 2; j <= n; j++)
{
if (graph[vnear][j] < distance[j])
{
distance[j] = graph[vnear][j];
nearest[j] = vnear;
}
}
}
return sum;
}
int main()
{
int i, j, k, m, n;
int cost;
cin >> m >> n;
for (i = 1; i <= m; i++)
{
for (j = 1; j <= m; j++)
{
graph[i][j] = INF;
}
}
for (k = 1; k <= n; k++)
{
cin >> i >> j >> cost;
graph[i][j] = cost;
graph[j][i] = cost;
}
cout << "V1->";
cost = prim(graph, m);
cout << "最小权值得和=" << cost << endl;
system("pause");
return 0;
}