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;
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
백준 1030번 프렉탈 평면 (JavaScript) (0) | 2021.01.21 |
---|---|
백준 15678번 연세워터파크 (JavaScript) (0) | 2021.01.08 |
백준 1764번 듣보잡 (c++) (0) | 2020.09.29 |
백준 1697번 숨바꼭질 (c++) (0) | 2020.09.29 |
백준 1012번 유기농 배추 (c++) (0) | 2020.09.29 |