SDUT 2129树结构练习——判断给定森林中有多少棵树(并查集)
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2129
最裸的并查集。。模板代码,好久没打过了。
#include<stdio.h> int p[1001]; int find(int x) { int a=x; while(p[a]!=a) a=p[a]; return a; } void mermge(int x,int y) { int x1=find(x),y1=find(y); if(x1!=y1) p[x1]=y1; } int main() { int a,b,c,m,n; while(scanf("%d%d",&a,&b)!=EOF) { for(c=1;c<=a;c++) p[c]=c; for(c=1;c<=b;c++) { scanf("%d%d",&m,&n); mermge(m,n); } for(c=1,n=0;c<=a;c++) { if(p[c]==c) n++; } printf("%d\n",n); } return 0; }