본문 바로가기

Algorithm/백준

백준 11724번 연결 요소의 개수 (c++)

1부터 n까지 방문하지 않은 노드를 확인할 때마다, 해당 노드와 연결된 노드들 전부를 방문하고 정답에 +1을 해준다.

연결된 노드를 방문하는 방식은 BFS를 이용하면 된다.

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

vector<int> node[1010];
int visited[1010];
int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        visited[i] = false;
    }
    for (int i = 0; i < m; i++)
    {
        int l, r;
        cin >> l >> r;
        node[l].push_back(r);
        node[r].push_back(l);
    }
    int answer = 0;
    for (int i = 1; i <= n; i++)
    {
        if (visited[i] == false)
        {
            answer++;
            visited[i] = true;
            queue<int> q;
            q.push(i);
            while (!q.empty())
            {
                int front = q.front();
                q.pop();
                for (int j = 0; j < node[front].size(); j++)
                {
                    if (visited[node[front][j]] == false)
                    {
                        visited[node[front][j]] = true;
                        q.push(node[front][j]);
                    }
                }
            }
        }
    }
    cout << answer << '\n';

    return 0;
}
반응형