求连通块个数(使用并查集)
生活随笔
收集整理的這篇文章主要介紹了
求连通块个数(使用并查集)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
并查集求連通塊個數(shù)的模板
#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+5; vector<int>G[maxn];bool isRoot[maxn] = {false}; int pre[maxn];void init(int n){for(int i = 0; i <= n; i++) pre[i] = i; }int find(int x){if(pre[x] == x) return x;else return pre[x] = find(pre[x]); }void mix(int a, int b){int fa = find(a), fb = find(b);if(fa != fb){pre[fa] = fb;} }int cul(int n){int ans = 0;for(int i = 1; i <= n; i++){isRoot[find(i)] = true;}for(int i = 1; i <= n; i++){ans += isRoot[i];}return ans; }int main() {int n;scanf("%d", &n);init(n);for(int i = 1; i < n; i++){int a, b;scanf("%d%d", &a, &b);mix(a, b);}//連通塊個數(shù)int cnt = cul(n);printf("%d\n", cnt);return 0; }Input : 5 1 2 1 3 1 4 2 5 Output: 1 Input: 5 1 3 1 4 2 5 3 4 Output: 2?
總結(jié)
以上是生活随笔為你收集整理的求连通块个数(使用并查集)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求逆元(线性求逆元)及其扩展欧几里得
- 下一篇: 阶乘的分解质因数