举头望明月,低头敲代码。。。并查集练习1

推荐学习地址:http://www.cnblogs.com/cyjb/p/UnionFindSets.html

简单:

hdu1213 How Many Tables:新手必秒

 1 #include<cstdio>
 2 const int N=1001;
 3 int f[N];
 4 void init(int n){
 5     for(int i=1;i<=n;++i)
 6         f[i]=i;
 7 }
 8 int fin(int x){
 9     if(x!=f[x])f[x]=fin(f[x]);
10     return f[x];
11 }
12 void uni(int x,int y){
13     if((x=fin(x))==(y=fin(y)))return;
14     else f[x]=y;
15 }
16 int main(){
17     int t,i,n,m,a,b,ans;
18     scanf("%d",&t);
19     while(t--){
20         scanf("%d%d",&n,&m);
21         init(n);
22         while(m--){
23             scanf("%d%d",&a,&b);
24             uni(a,b);
25         }
26         ans=0;
27         for(i=1;i<=n;++i)
28             if(f[i]==i)
29                 ans++;
30         printf("%d\n",ans);
31     }
32 }
View Code

相关文章:

  • 2022-12-23
  • 2022-01-11
  • 2021-10-15
  • 2021-10-15
  • 2021-11-01
  • 2021-10-25
  • 2021-06-27
  • 2022-12-23
猜你喜欢
  • 2021-07-31
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
  • 2022-02-08
  • 2022-12-23
  • 2022-03-05
相关资源
相似解决方案