【杭电】[1232]畅通工程

来源:互联网 发布:淘宝上的内衣有图评论 编辑:程序博客网 时间:2024/05/01 00:34

这里写图片描述
这里写图片描述

体验一把套模板的毫无意义的爽快感
虽然这题很早以前就做过
但这次用了压缩路径加防退化

哎呀……
这套用的我都不知道把题解直接写在并查集说明 还是写到这里了……

就这一题而言……
我勒个去……
没什么说的
标准的并查集
看并查集的说明吧
【看书】并查集——合并与查询

然后输出的是 总集合数-1
便可达到畅通

#include<stdio.h>int par[1020];int rank[1020];int find(int m) {    if(par[m]==m) {        return m;    } else        return par[m]=find(par[m]);}void unite(int x,int y) {    x=find(x);    y=find(y);    if(x==y)        return;    else {        if(rank[x]<rank[y]) {            par[x]=y;        } else {            par[y]=x;            if(rank[x]==rank[y])                rank[x]++;        }    }}int main() {    int N,M;    while(scanf("%d", &N),N) {        scanf("%d", &M);        for(int i=1; i<=N; i++) {            par[i]=i;            rank[i]=0;        }        while(M--) {            int u,v;            scanf("%d %d",&u,&v);            unite(u,v);        }        int cnt=0;        for(int i=1; i<=N; i++) {            if(par[i]==i)                cnt++;        }        printf("%d\n",cnt-1);    }    return 0;}

题目地址:【杭电】[1232]畅通工程

0 0
原创粉丝点击