模板—Kruskal

int getf(int x){return (f[x]==x)?x:f[x]=getf(f[x]);}
void hb(int x,int y){x=getf(x),y=getf(y),f[y]=x;}
inline void add(int u,int v,int w,int c);
int kruskal()
{
    int num=0;ans=0;
    for(int i=0;i<=v;i++)f[i]=i;
    sort(ed+1,ed+num_e+1);
    for(int i=1;i<=num_e;i++)
    if(getf(u(i))!=getf(v(i)))
    {
        ans+=w(i);
        hb(u(i),v(i));
        if(!c(i))num++;
    }
    return num;
}

 

posted @ 2019-07-12 17:02  Al_Ca  阅读(76)  评论(0编辑  收藏  举报
ヾ(≧O≦)〃嗷~