仅用作打卡
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef pair<int, int> PII;
const int N = 1e5 + 10, M = N * 2;
int n, m;
int maxd, sum;
int d[N], p[N];
int dfs(int u)
{
if(p[u] == -1 || d[u] > 0) return d[u];
sum++;
d[u] = dfs(p[u]) + 1;
return d[u];
}
int main()
{
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++) scanf("%d", &p[i]);
int x;
while(m--)
{
scanf("%d", &x);
maxd = max(maxd, dfs(x));
printf("%d\n", sum * 2 - maxd);
}
return 0;
}