1. #include "iostream"
  2. #include "cstdio"
  3. #include "cstdlib"
  4. #include "cstring"
  5. #include "cmath"
  6. #include "algorithm"
  7. #include "queue"
  8. #include "vector"
  9. #include "stack"
  10. #include "map"
  11. #include "set"
  12. using namespace std;
  13. typedef long long ll;
  14. const int maxn = 100010;
  15. const int INF = 1e9;
  16. //priority_queue<int, vector<int>, greater<int> > q;
  17. int fa[maxn]; //并查集数组
  18. int n, m;
  19. //初始化并查集数组
  20. void init() {
  21. for(int i = 1; i <= n; ++i) fa[i] = i;
  22. }
  23. //找爹函数
  24. int find(int x) {
  25. return x == fa[x] ? x : fa[x] = find(fa[x]);
  26. }
  27. int main() {
  28. while(true) {
  29. cin >> n;
  30. if(!n) break;
  31. cin >> m;
  32. init();
  33. for(int i = 0; i < m; ++i) {
  34. int x, y;
  35. cin >> x >> y;
  36. int p1 = find(x);
  37. int p2 = find(y);
  38. if(p1 != p2) fa[p2] = p1;
  39. }
  40. int res = 0;
  41. for(int i = 1; i <= n; ++i) if(fa[i] == i) res++;
  42. cout << res - 1 << endl;
  43. }
  44. return 0;
  45. }
点赞(0)
 

9.9 分

1 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论