【よくわかる】ABC284 C問題 Count Connected Components

ABC

ABC284のC問題 Count Connected Components の解説です。

コード

#include<bits/stdc++.h>
using namespace std;

vector> G;
vector visited;

// 探索する関数
void rec (int v) {
    visited[v] = true;
    for (auto v2 : G[v]) {
        if (visited[v2]) continue;
        rec(v2);
    }
}

int main() {
    int n, m;
    cin >> n >> m;
    G.resize(n);
    visited.resize(n);
    for (int i = 0; i < n; i++) visited[i] = false;

    for (int i = 0; i < m; i++) {
        int a, b;
        cin >> a >> b;
        a--;
        b--;
        G[a].push_back(b);
        G[b].push_back(a);
    }

    int ans = 0;
    for (int v = 0; v < n; v++) {
        if (!visited[v]) {
            rec(v);
            ans++;
        }
    }
    cout << ans << endl;
    return 0;
}

解説動画リンク

解説動画はこちらです。

コメント