코드
#include <iostream>
#include <vector>
using namespace std;
int n,a,b,m,x,y,visited[103];
vector<int> adj[103];
void dfs(int x, int depth) {
visited[x] = depth;
for(int i : adj[x]) {
if(visited[i] == -1) {
dfs(i, depth + 1);
}
}
return;
}
// 촌수 -> 깊이
int main() {
cin >> n; // 전체 인원
cin >> a >> b; // 촌수 계산할 사람
cin >> m;
fill(visited, visited + 103, -1);
for(int i = 0; i < m; i++) {
cin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
}
dfs(a,0);
cout << visited[b] << '\n';
return 0;
}
풀이
현재 노드에서 자식 노드로 이동할 때의 깊이를 방문배열에 저장하면서 촌수를 계산했다. 촌수는 현재 노드에서 목표 노드까지의 깊이를 의미한다고 생각하고 문제에 접근했다.
'백준' 카테고리의 다른 글
[백준] 1874번 스택 수열 C++ 코드 (0) | 2024.08.19 |
---|---|
[백준] 2573번 빙산 C++ 코드 (0) | 2024.08.18 |
[백준] 5014번 스타트링크 C++ 코드 (0) | 2024.08.17 |
[백준] 2268번 수들의 합 7 C++ 코드 (0) | 2024.08.13 |
[백준] 12865번 평범한 배낭 C++ 코드 (0) | 2024.08.13 |