首页 > 代码库 > 七月23 ACM集训——最小生成树

七月23 ACM集训——最小生成树

prim算法模板

int  prim(int x)
{
    int i,j,sum=0,min=M,k;

    memset(vit,0,sizeof(vit));
    memset(dis,0,sizeof(dis));
    for(i=1;i<=m;i++)
        dis[i]=p[x][i];
    dis[x]=0;
    vit[x]=1;
    for(i=1;i<m;i++)
    {
        min=M;
        k=-1;
        for(j=1;j<=m;j++)
        {
            if(!vit[j]&&dis[j]<min)
            {
                min=dis[j];
                k=j;
            }
        }
           
            if(k!=-1)
            { 
            vit[k]=1;
            sum+=dis[k];
            for(j=1;j<=m;j++)
            {
                if(!vit[j]&&dis[j]>p[k][j])
                    dis[j]=p[k][j];
            }
            }
    }   
        return sum;