最小生成树prim算法

来源:互联网 发布:周围神经炎知乎 编辑:程序博客网 时间:2024/05/29 15:07
#include<queue>#include<stdio.h>#include<stdlib.h>#define inf 1000000int par[1000],dis[1000][1000],vis[1000];int boot(int a){    int p;    if(par[a]==a)        return a;    return par[a]=boot(par[a]);}void pa(int a,int b){    int t,p;    t=boot(a);    p=boot(b);    par[t]=p;    return ;}int main(){    int i,n,tot=1,a,count,b[1000],t,j,min,k;    a=0;    t=0;    b[t++]=a;    memset(vis,0,sizeof(vis));    vis[a]=1;    while(tot<n)    {        for(i=0;i<n;i++)        {            if(boot(a)!=boot(i))            {                pa(a,i);                count+=dis[i][a];                b[t++]=i;                vis[i]=1;            }        }        min=inf;        k=-1;        for(i=0;i<n;i++)        {            for(j=0;j<t;j++)            {                if(boot(i)!=boot(j)&&dis[i][j]<min)                {                    min=dis[i][j];                    k=i;                }            }        }        a=k;    }}

0 0