hdoj1213

Bertha 。 2022-06-07 00:21 260阅读 0赞

一道简单的并查集题目hdoj1212

  1. #include<iostream>
  2. using namespace std;
  3. int T,N,M;
  4. int father[2000];
  5. void initial(int n){ //初始化数组
  6. for(int i=1;i<=n;i++)
  7. father[i] = i;
  8. }
  9. int find(int x){ //查找函数
  10. if(father[x] == x) return x;
  11. return father[x] = find(father[x]);
  12. }
  13. void UNION(int x,int y){ //合并
  14. int fx = find(x);
  15. int fy = find(y);
  16. if(fx!=fy){
  17. N--;
  18. father[fy] = fx;
  19. }
  20. }
  21. int main(){
  22. int i,a,b;
  23. cin>>T;
  24. while(T--){
  25. cin>>N>>M;
  26. initial(N);
  27. for(i=0;i<M;i++){
  28. cin>>a>>b;
  29. UNION(a,b);
  30. }
  31. cout<<N<<endl;
  32. }
  33. return 0;
  34. }

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读