prim算法(zoj1203)

    自己写了下prim(),以前都是用模版的,发现写一次可以更好有助于理解。

   http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=203

   题目没看,算了一下发现时最小支撑树就用prim去做了,不过ZOJ的输出实在恶心,特别是水题的输出一般比较BT。PR了多次。

简单的Prim算法,只返回最小路径长,需要返回其他参数可以做适当修改。

double prim()
{
int i,j,nd1,nd2,num;
double lenn=0,max;
node[0]=true;
num=1;
while(num<n)
{
    max=10000000;
    for(i=0;i<n;i++)
{
if(node[i])
{
   for(j=0;j<n;j++)
   {
    if(node[j]) continue;
    else if(map[i][j]<max) {max=map[i][j];nd1=i;nd2=j;}
   }
}
}
num++;
node[nd2]=true;
    lenn+=map[nd1][nd2];
}
return lenn;
}

posted @ 2011-08-23 11:06  Orig  阅读(284)  评论(0编辑  收藏  举报