HDU~1213~How Many Tables

来源:互联网 发布:软件项目合同范本 编辑:程序博客网 时间:2024/04/30 19:46

finder():查找根结点;

unio():更改根结点(没有进行路径压缩)

/* * Author: 风凌月影 * School: HZIEE * Time  : 2014-12-05-09.29 * File Name :  */#include <iostream>#include <cstdio>using namespace std;const int maxn=1100;int f[maxn];int finder(int x){return x==f[x]?x:f[x]=finder(f[x]);}void unio(int a,int b){int fa=finder(a);int fb=finder(b);if(fa!=fb)f[fb]=fa;}int main(){int t;    int n,m;    int i,j;    int u,v;    scanf("%d",&t);    while(t--){scanf("%d %d",&n,&m);int sum=0;for(i=1;i<=n;i++)f[i]=i;for(i=0;i<m;i++){scanf("%d %d",&u,&v);unio(u,v);}for(i=1;i<=n;i++)if(f[i]==i)sum++;printf("%d\n",sum);}    return 0;}


0 0