문제
풀이
DFS와 BFS 중의 하나를 사용해서 function call이 몇번 일어났는지 count하면 되는 문제이다. DFS를 이용했다.
소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> map(101, vector<int>(101));
vector<bool> visit(101);
int cont;
int N, M;
void dfs(int s){
cont++;
visit[s] = true;
for(int i = 1; i<=N; i++){
if(map[s][i] == 1 && visit[i] == false) dfs(i);
}
}
int main(){
scanf("%d", &N);
scanf("%d", &M);
for(int i = 0; i<M; i++){
int start;
int end;
scanf("%d %d", &start, &end);
map[start][end] = 1;
map[end][start] = 1;
}
dfs(1);
printf("%d\n", cont-1);
}