并查集判断无向图联通

来源:互联网 发布:衡阳软件培训 编辑:程序博客网 时间:2024/04/29 21:40

 

#include<stdio.h>int map[110];int n,m;int find(int i){return map[i]==i?i:map[i]=find(map[i]);}void init(){for(int i=0;i<n;i++)map[i]=i;}int main(){while(scanf("%d%d",&n,&m)==2){init();int a,b;for(int i=0;i<m;i++){scanf("%d%d",&a,&b);a--;b--;map[find(a)]=map[find(b)];}int res=0;for(int i=0;i<n;i++){if(map[i]==i)res++;}if(res==1)printf("yes\n");elseprintf("no\n");}return 0;}