diff --git a/src/week2/BOJ1068/BOJ1068_V1.cpp b/src/week2/BOJ1068/BOJ1068_V1.cpp new file mode 100644 index 0000000..b5a604c --- /dev/null +++ b/src/week2/BOJ1068/BOJ1068_V1.cpp @@ -0,0 +1,55 @@ +#include +using namespace std; +int target; +int N; +vector> tree; +int cnt = 0; +void dfs(int num) { + if (tree[num].size() == 0) { + cnt++; + return; + } + + for (int i : tree[num]) { + dfs(i); + } +} + +int main() { + + cin >> N; + for (int i = 0; i < N; i++) { + tree.push_back(vector()); + int num; + cin >> num; + if (num == -1) continue; + tree[num].push_back(i); + } + + cin >> target; + if (target == 0) { + cout << 0; + return 0; + } + + tree[target].clear(); + int num = 0; + int flag = true; + while(flag) { + if (num == tree.size()) + break; + for (int i=0; i +using namespace std; +int target; +int N; +vector> tree; +int dfs(int num) { + int ret = 0; + int child = 0; + for (int i : tree[num]) { + if (i == target) continue; + ret += dfs(i); + child++; + } + + if (child == 0) + return 1; + + return ret; +} + +int main() { + + cin >> N; + for (int i = 0; i < N; i++) { + tree.push_back(vector()); + int num; + cin >> num; + if (num == -1) continue; + tree[num].push_back(i); + } + + cin >> target; + if (target == 0) { + cout << 0; + return 0; + } + + + cout << dfs(0); + + return 0; +}