#include <iostream>
using namespace std;
struct Edge
{
int u,v;
int len;
};
const int n=5;
const int M=10000000;
Edge T[n];
int map[n][n],mmlen,mmnum;
void input();
void init();
void prim();
int main()
{
input();
init();
prim();
return 0;
}
void prim()
{
int i,j;
for (i=1;i<n;i++)
{
for (j=i;j<n;j++)
if (T[j].len<mmlen)
{
mmlen=T[i].len;
mmnum=j;
}
swap(T[i],T[mmnum]);
for (j=i+1;j<n;j++)
{
if (map[T[i].v-1][T[j].v-1]<T[j].len)
{
T[j].len=map[T[i].v-1][T[j].v-1];
T[j].u=T[i].v;
}
}
}
}
void init()
{
int i;
for (i=1;i<n;i++)
{
T[i].u=0;
T[i].v=i;
T[i].len=map[0][i];
}
mmlen=M;
}
void input()
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
if (i==j)
map[i][j]=0;
else
map[i][j]=M;
}
Edge tmp;
while (cin>>tmp.u>>tmp.v>>tmp.len)
map[tmp.u-1][tmp.v-1]=tmp.len;
}
Prim
最新推荐文章于 2022-09-05 12:17:36 发布