Pagini recente » Cod sursa (job #2561885) | Cod sursa (job #2711268) | Cod sursa (job #734527) | Cod sursa (job #2284092) | Cod sursa (job #1721032)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int> V[300100];
int N,Q,G[300100],R[300100];
void dfs(int v){
G[v] = INT_MAX;
for(auto it : V[v]){
dfs(it);
if(G[v] > G[it]) G[v] = G[it],R[v] = R[it];
}
if(G[v] > V[v].size()+(v>1)) G[v] = V[v].size()+(v>1), R[v] = v;
}
int main(){
cin >> N >> Q;
for(int i = 2,x;i<=N;i++){cin >> x;V[x].push_back(i);}
dfs(1);
for(int x;Q--;){
cin >> x;
cout << R[x] << '\n';
}
return 0;
}