Algorithm/백준알고리즘

[백준] 연결요소의 개수

HANCO 2020. 10. 5. 23:29

안녕하세요

백준 연결요소의 개수 문제를 풀어보았습니다.

저는 DFS를 응용하여 풀었습니다.

    #include<iostream>
    #include<queue>
    #include<vector>
    #include<utility>
    using namespace std;

    vector<int> v[1001];
    int N, M;
    int visit[1001] = { 0, };

    void dfs(int x) {

        visit[x] = 1;
        //해당 벡터배열의 크기만큼 탐색
        for (int i = 0; i < v[x].size(); i++) {
            int next = v[x][i];
            //연결된 노드의 방문을 안했다면 그 노드를 재귀로 방문한다.
            if (visit[next] == 0) {
                dfs(next);
            }
        }
    }
    int main() {
        cin >> N >> M;
        int cnt = 0;
        //해당 노드의 연결된 값들을 배열에 저장
        for (int i = 0; i < M; i++) {
            int a, b; cin >> a >> b;
            v[a].push_back(b);
            v[b].push_back(a);
        }

        for (int i = 1; i <= N; i++) {
            if (visit[i] == 0) {
                dfs(i);
                cnt++;
            }
        }
        cout << cnt << '\n';
    }

감사합니다.