250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(백준 c++)11724 연결 요소의 개수 본문
728x90
반응형
문제
방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다.
출력
첫째 줄에 연결 요소의 개수를 출력한다.
N개의 노드와 M개의 간선을 그래프로 나타낸 후, DFS를 통해 연결 요소의 개수를 확인한다.
방향이 없기 때문에 graph[u][v] = true, graph[v][u] = true로 하여 한번 방문했던 노드는 방문하지 않도록 처리해야 한다.
또한, visited 벡터도 함께 사용한다.
#include <iostream>
#include <vector>
using namespace std;
int N = 0;
int M = 0;
vector<vector<bool>> graph(10001, vector<bool>(10001, 0));
vector<bool> visited(10001, false);
void dfs(int start){
visited[start] = true;
for(int i = 1; i <= N; i++){
if(!visited[i] && graph[start][i]){
dfs(i);
}
}
}
int main(void){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int ans = 0;
cin >> N >> M;
for(int i = 0; i < M; i++){
int u, v;
cin >> u >> v;
graph[u][v] = true;
graph[v][u] = true;
}
for(int i = 1; i <= N; i++){
if(!visited[i]){
dfs(i);
ans++;
}
}
cout << ans;
return 0;
}
728x90
반응형
'백준 알고리즘' 카테고리의 다른 글
(백준 c++)9372 상근이의 여행 (0) | 2021.06.29 |
---|---|
(백준 c++)2309 일곱 난쟁이 (0) | 2021.06.25 |
(백준 c++)10845 큐 (0) | 2021.06.25 |
(백준 JS)10870 피보나치 수 5 (0) | 2021.06.23 |
(백준 c++)2573 빙산 (0) | 2021.06.22 |