//------------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;
}