프로그래밍 공부/백준 (C++)
[C++ / 백준 11724번] 연결 요소의 개수
Rocketbabydolls
2025. 2. 22. 10:37
문제
시행 착오
연결 요소 <-- 이게 무엇인지 이해를 하려고 검색했다.
연결 요소란 간단히 말해서 간선으로 이어진 정점들의 한 뭉탱이를 말한다.
1-3-5 2-4
이렇게 연결 된 정점들이 있다면 연결 요소는 두 개인 것.
해결 방법
dfs 혹은 bfs 를 시행했을 때 한 번의 시행으로 전부 순회가 안 된다면 연결 요소가 두개 이상 있는 것이다. 두해당 알고리즘 시행 횟수만큼이 연결 요소의 개수가 된다.
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int N, M, V;
vector<int> g[1001];
bool visited[1001] = { false };
queue<int> q;
int cnt = 0;
void dfs(int node)
{
visited[node] = true;
for (auto nextnode : g[node])
{
if (!visited[nextnode])
{
dfs(nextnode);
}
}
}
int main() {
cin >> N >> M;
for (int i = 0; i < M; i++) {
int u, v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
for (int i = 1; i <= N; i++)
{
sort(g[i].begin(), g[i].end());
}
for (int i = 1; i <= N; i++)
{
if (!visited[i])
{
cnt++;
dfs(i);
}
else continue;
}
cout << cnt;
return 0;
}