Prim

//------------Prim---------------
int cost[N][N];
int lowcost[N];
int prenode[N];

int Prim(int n)
{
int finalcost=0;
int i,j,u,min;

for(i=1;i<=n;i++)
{
lowcost[i]
=cost[1][i];
prenode[i]
=1;
}
lowcost[
1]=-1;

for(i=1;i<n;i++)
{
min
=MAXCOST;
for(j=1;j<=n;j++)
{
if(lowcost[j]!=-1 && lowcost[j]<min)
{
min
=lowcost[j];
u
=j;
}
}
if(min==MAXCOST) return -1;//IMPOSSIBLE_CONNEX

finalcost
+=min;
lowcost[u]
=-1;

for(j=1;j<=n;j++)
{
if(lowcost[j]!=-1 && cost[u][j]<lowcost[j])
{
lowcost[j]
=cost[u][j];
prenode[j]
=u;//这里太给力了!
}
}
}

return finalcost;
}

原文地址:https://www.cnblogs.com/fornever/p/2176237.html