반응형
#include <bits/stdc++.h>
using namespace std;
vector<int> a[54];
int n;
int parentNode; // 부모 노드
int root; // 루트 위치
int target;
int answer;
int dfs(int here){
int result = 0;
bool childCheck = false;
// 이 for문을 돈다는 것은 자식이 있다는 것
for(int there : a[here]){
if(target == there) continue;
result += dfs(there);
childCheck = true;
}
if(childCheck==false) return 1;
return result;
}
int main(){
cin >> n;
for(int i=0; i<n; i++){
cin >> parentNode;
if(parentNode == -1) root = i;// 루트면 위치 지정
else a[parentNode].push_back(i); // 루트가 아니면 부모에게 달아주자
}
cin >> target;
if(target == root) {
cout << 0 << "\n";
return 0;
}
else {
answer = dfs(root);
cout << answer << "\n";
}
return 0;
}
반응형
'코테 > 문제풀이' 카테고리의 다른 글
113. Path Sum II 정답 및 문제풀이 C++ (0) | 2023.03.18 |
---|---|
백준 13305 주유소 문제 c++ (0) | 2023.02.28 |
프로그래머스 순위 문제 (0) | 2023.02.12 |
[알고리즘] 백준 1629 곱셈 힌트 및 정답 (0) | 2023.01.23 |
[알고리즘] 11655 ROT13 C++ (0) | 2023.01.15 |