반응형
문제
해설
DFS를 활용한 문제풀이
코드
#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
#include <queue>
using namespace std;
int n, m, u, v, visit[1001];
vector<vector<int>> adj;
void dfs(int x) {
visit[x] = 1;
for (auto i : adj[x]) {
if (!visit[i])
dfs(i);
}
}
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
cin >> n >> m;
adj.resize(n + 1);
for (int i = 0; i < m; i++) {
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (!visit[i]) {
dfs(i);
cnt++;
}
}
cout << cnt << '\n';
return 0;
}
반응형
'Development > Algorithm' 카테고리의 다른 글
[LeetCode] Two Sum (0) | 2021.08.02 |
---|---|
[BOJ] 1012. 유기농 배추 (0) | 2020.10.27 |
[BOJ] 10799. 쇠막대기 (0) | 2020.10.27 |
[BOJ] 2667. 단지번호붙이기 (0) | 2020.10.22 |
[BOJ] 9012. 괄호 (0) | 2020.10.18 |