比赛 2025.9.13 评测结果 AAAAAAAAAAAAAAAAAA
题目名称 Vocabulary Quiz 最终得分 100
用户昵称 淮淮清子 运行时间 3.044 s
代码语言 C++ 内存使用 19.34 MiB
提交时间 2025-09-13 11:22:06
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

const int MAXN = 1e6 + 5;
int n, m;
int fa[MAXN], dep[MAXN], sz[MAXN];
int tot, h[MAXN];

struct node{
	int to, next;
}e[MAXN];

inline void add(int x, int y){
    e[++ tot] = {y, h[x]};
    h[x] = tot;
}

void dfs(int u){
    if(!sz[u]) m ++;
    dep[u] = dep[fa[u]] + 1;
    for(int i = h[u];i;i = e[i].next){
    	dfs(e[i].to);
	}
}

int delet(int u){
    if(sz[u]) return dep[u] + 1;
    if(u == 0) return 0;
    sz[fa[u]]--;
    return delet(fa[u]);
}

int main(){
	freopen("Vocabulary.in", "r", stdin);
	freopen("Vocabulary.out", "w", stdout);
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n;
    fa[0] = 0; dep[0] = -1;
    for(int i = 1;i <= n;i ++){
        cin >> fa[i];
        add(fa[i], i);
        sz[fa[i]] ++;
    }
    dfs(0);
    while(m --){
        int x; cin >> x;
        cout << delet(x) << '\n';
    }
    return 0;
}