码迷,mamicode.com
首页 > 编程语言 > 详细

kruskal算法

时间:2017-04-01 21:14:55      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:const   int   struct   oid   prim   log   str   code   联通图   

const int maxn=28;
struct Edge{
    int u,v,w;
    bool operator <(const Edge &rhs) const{
        return w<rhs.w;
    }
}edges[maxn*maxn];
int f[maxn];

void init(int N){
    for(int i=1;i<=N;i++)
        f[i]=i;
}

int findfa(int a){
    if(f[a]!=a)
        f[a]=findfa(f[a]);
    return f[a];
}

void unit(int a,int b){
    int fa=findfa(f[a]);
    int fb=findfa(f[b]);

    if(fa!=fb)
        f[fa]=f[fb];
}

int m=0;
void addEdge(int u,int v,int w){
    edges[m].u=u;
    edges[m].v=v;
    edges[m].w=w;
    m++;
}

int  prime(int N){
    init(N);

    sort(edges,edges+m);

    int ans=0;
    int cnt=0;
    for(int i=0;i<m;i++){
        if(findfa(edges[i].u)!=findfa(edges[i].v)){
            ans+=edges[i].w;
            unit(edges[i].u,edges[i].v);
            cnt++;
        }
        if(cnt==N-1)
            break;
    }
    if(cnt!=N-1)  //这不是联通图
        ans=-1;
    return ans;
}

 

kruskal算法

标签:const   int   struct   oid   prim   log   str   code   联通图   

原文地址:http://www.cnblogs.com/IKnowYou0/p/6657445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!