#define _CRT_SECURE_NO_WARNINGS
#define MAX 100
#define MAXCOST 0x7fffffff
int graph[MAX][MAX];
int mstgraph[MAX][MAX];
int prim(int graph[][MAX], int n)
{
int lowcost[MAX];
int mst[MAX];
int i, j, min, minid, sum = 0;
for (i = 2; i <= n; i++)
{
lowcost[i] = graph[1][i];
mst[i] = 1;
}
mst[1] = 0;
for (i = 2; i <= n; i++)
{
min = MAXCOST;
minid = 0;
for (j = 2; j <= n; j++)
{
if (lowcost[j] < min && lowcost[j] != 0)
{
min = lowcost[j];
minid = j;
}
}
printf("V%d ", mst[minid]);
printf("-V%d", minid);
printf("=%d\n", min);
sum += min;
lowcost[minid] = 0;
for (j = 2; j <= n; j++)
{
if (graph[minid][j] < lowcost[j])
{
lowcost[j] = graph[minid][j];
mst[j] = minid;
}
}
}
return sum;
}
int main()
{
int i, j, k, m, n;
int x, y, cost;
scanf("%d %d", &m, &n);
for (i = 1; i <= m; i++)
{
for (j = 1; j <= m; j++)
{
graph[i][j] = MAXCOST;
}
}
for (k = 1; k <= n; k++)
{
scanf("%d %d %d",&x, &y,&cost);
graph[x][y] = cost;
graph[y][x] = cost;
}
int Tcost = prim(graph, m);
printf("最小权值和=%d\n", Tcost);
system("pause");
return 0;
}