显示代码纯文本
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 1e6 + 10;
int N;
int fa[MAXN], siz[MAXN], depth[MAXN];
vector<int> g[MAXN];
void dfs(int u) {
for (auto v : g[u]) {
depth[v] = depth[u] + 1;
siz[u]++;
dfs(v);
}
}
int main() {
freopen("Vocabulary.in", "r", stdin);
freopen("Vocabulary.out", "w", stdout);
cin >> N;
for (int i = 1; i <= N; ++i) {
cin >> fa[i];
g[fa[i]].push_back(i);
}
dfs(0);
fa[0] = -1;
for (int w; cin >> w;) {
while (w != -1) {
if (siz[w] > 1) break;
w = fa[w];
}
if (w == -1) {
cout << 0 << endl;
} else {
cout << depth[w] + 1 << endl;
siz[w]--;
}
}
return 0;
}