hdu1232 畅通工程

来源:互联网 发布:淘宝退款成功后钱在哪 编辑:程序博客网 时间:2024/06/11 12:25

一直以为这题要用最小生成树做,弄来弄去没弄出来,后来才知道用并查集就可以了

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<iostream>using namespace std;int n,m,fa[1005];int find(int p){if(fa[p]!=p)fa[p]=find(fa[p]);return fa[p];}void unionset(int p,int q){fa[q]=p;}int main(){while(scanf("%d",&n)!=EOF){if(n==0)break;for(int i=1;i<=1000;i++){fa[i]=i;}scanf("%d",&m);for(int i=0;i<m;i++){int u,v;scanf("%d%d",&u,&v);int a=find(u);int b=find(v);if(a!=b){n--;fa[b]=a;}}printf("%d\n",n-1);}return 0;}


原创粉丝点击