https://www.acmicpc.net/problem/2606
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector <int> a[101];
int com, net;
bool check[101];
int cnt=0;
void dfs(int node){
check[node] = true;
cnt++;
for (int i=0;i<a[node].size();i++){
int next = a[node][i];
if (check[next]!=true)
dfs(next);
}
}
int main(){
cin >> com >> net;
int x, y;
for (int i=0;i<net;i++){
cin >> x >> y ;
a[x].push_back(y);
a[y].push_back(x);
}
for (int i=1;i<x;i++){
sort(a[i].begin(), a[i].end());
}
dfs(1);
cout << cnt-1;
}
- dfs로 해결
- dfs로 풀기 위해서는 배열 내부를 정렬해야 하고, 방문체크를 해야한다
'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
위상정렬 문제 리스트 (0) | 2022.05.22 |
---|---|
[C++] 백준 1197 최소 스패닝 트리 (0) | 2022.05.17 |
Union-Find (0) | 2022.05.16 |
[C++] 백준 9372 상근이의 여행 (0) | 2022.05.14 |
최소신장트리 문제 리스트 (0) | 2022.05.14 |
[C++] 백준 1504 특정한 최단경로 (0) | 2022.05.12 |