[ABC284C] Count Connected Components 题解

· · 题解

本题要求求出一个图中连通分量的数量。

本篇题解与其他题解不同,主要介绍 AtCoder Library 中 dsu(并查集)的使用方法。

ACL 中的 dsu 有如下几个函数可供调用:

每次连边就相当于合并两个数所在的集合。最终的答案就是 groups().size(),即集合的个数。

放代码:

#include<atcoder/all>
using namespace std;
main(){
  ios::sync_with_stdio(false);
  int n,m; cin>>n>>m;
  atcoder::dsu d(n);
  while(m--){
    int x,y; cin>>x>>y;
    d.merge(x-1,y-1); // 合并
  }
  cout<<d.groups().size()<<endl; // 集合数即为连通分量数
  return 0;
}