MST的prim算法
int prim(int n)
{
int lowcost[maxn]; //记录集合外的点到集合内的距离
bool s[maxn]; //记录是否包含在集合中
for(int i=1;i<=n;i++)
{
lowcost=c[1];
s=false;
}
s[1]=true; //初始化
int sum=0;
for(int i=2;i<=n;i++) //逐个找连接森林的最短边加入
{
int minn=INF;
int u=-1;
for(int j=1;j<=n;j++) //找最短边
{
if(!s[j]&&lowcost[j]<minn)
{
u=j;
minn=lowcost[j];
}
}
if(u==-1) return INF;//两个森林不联通
sum+=minn; s=true;
for(int j=1;j<=n;j++) //更新外围的距离
{
if(!s[j]&&c[j]<lowcost[j])
{
lowcost[j]=c[j];
}
}
}
return sum;
}