最朴素的prim算法

来源:互联网 发布:c4d r17 mac 破解版 编辑:程序博客网 时间:2024/05/15 13:40
/* 朴素的prim来实现最小生成树*/int cost[max_v][max_v];//cost[u][v] 代表边e=(u,v)的权值int mincost[max_v];//从集合x出发的边到每个集合的最小权值bool used [max_v];//顶点i是否包括在集合x中int v;//顶点数int prim(){    for(int i=0;i<v;i++)    {        mincost[i]=INF;        used[i]=false;    }    mincost [0]=0;    int res=0;    while(true)    {        int v=-1;        //从不属于x的顶点中选取从x到其权值最小的顶点        for(int u=0;u<v;u++)        {          if(!used[u]&&(v==-1||mindis[u]<mindis[v])) v=u;        }        if(v==-1) break;        used[v]=true;        res+=mincost[v];        //更新最短距离        for(int u=0;u<v;u++)        {            mincost[u]=min(mincost[u],cost[v][u]);        }                    }}

0 0
原创粉丝点击