#include <bits/stdc++.h>

using namespace std;

using ll = long long;

vector<vector<int>> g;
vector<int> p, s, ans;
vector<int> sz;

int ord = 0;

int cmp(int a, int b) {
    return s[a] > s[b];
}

void dfs(int u, int msz) {
    sz[u] = 1;
    ans[u] = ord - msz;
    ord++;
    sort(g[u].begin(), g[u].end(), cmp);
    for (auto v : g[u]) {
        dfs(v, msz);
        msz = max(msz, sz[v]);
        sz[u] += sz[v];
    }
}

void solve() {
    int n, q;
    cin >> n >> q;
    p.resize(n);
    g.resize(n);
    for (int i = 1; i < n; i++) {
        cin >> p[i];
        p[i]--;
        g[p[i]].push_back(i);
    }
    s.resize(n);
    for (int i = 0; i < n; i++) {
        cin >> s[i];
    }
    ans.resize(n);
    sz.resize(n);
    dfs(0, 0);
    for (int i = 0; i < q; i++) {
        int v;
        cin >> v;
        v--;
        cout << ans[v] << ' ';
    }
    cout << '\n';
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    for (int i = 0; i < t; i++) solve();
}
