157292025-02-24 21:18:55TaxiradioVállalati ügyeletcpp17Accepted 100/100337ms36784 KiB
// Source: https://usaco.guide/general/io

#include <algorithm>
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> g , b;
vector<int> a , ans;
vector<array<int , 2>> c;

int t = 0;

void dfs(int h){
    c[h][0] = t++;
    b[a[h]].push_back(c[h][0]);
    for(int x : g[h])dfs(x);
    c[h][1] = t++;
}

int dfs2(int h){
    ans[h] = 1;
    for(int x : g[h])ans[h] = max(dfs2(x) , ans[h]);
    while(*lower_bound(b[ans[h]].begin() , b[ans[h]].end() , c[h][0]) <= c[h][1])ans[h]++;
    return ans[h];
}

int main() {
	int n; cin >> n;
    g.resize(n);
    b.resize(n+2);
    ans.resize(n);
    c.resize(n);
    for(int i = 0; i < n; i++){
        int y; cin >> y;y--;
        if(y != -1)g[y].push_back(i);
    }
    for(int i = 0; i < n; i++){
        int y; cin >> y;
        a.push_back(y);
    }
    dfs(0);
    for(int i = 0; i < b.size(); i++){
        b[i].push_back(1000000);
    }
    dfs2(0);
    for(int x : ans)cout << x << " ";
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted216ms24232 KiB
subtask25/5
3Accepted1ms316 KiB
4Accepted1ms500 KiB
5Accepted1ms316 KiB
6Accepted1ms500 KiB
subtask38/8
7Accepted1ms316 KiB
8Accepted1ms500 KiB
9Accepted1ms316 KiB
10Accepted1ms500 KiB
11Accepted158ms21284 KiB
12Accepted165ms21220 KiB
13Accepted163ms20972 KiB
14Accepted192ms20172 KiB
subtask412/12
15Accepted1ms316 KiB
16Accepted1ms500 KiB
17Accepted1ms316 KiB
18Accepted1ms500 KiB
19Accepted217ms36784 KiB
20Accepted224ms36264 KiB
21Accepted238ms36300 KiB
22Accepted284ms35132 KiB
23Accepted243ms36056 KiB
24Accepted233ms36036 KiB
subtask517/17
25Accepted1ms316 KiB
26Accepted1ms500 KiB
27Accepted1ms316 KiB
28Accepted1ms500 KiB
29Accepted3ms564 KiB
30Accepted3ms760 KiB
31Accepted3ms564 KiB
32Accepted3ms564 KiB
33Accepted3ms564 KiB
34Accepted3ms564 KiB
35Accepted3ms564 KiB
36Accepted3ms564 KiB
37Accepted3ms568 KiB
38Accepted3ms568 KiB
39Accepted3ms564 KiB
40Accepted3ms536 KiB
41Accepted3ms564 KiB
subtask628/28
42Accepted237ms22824 KiB
43Accepted246ms24120 KiB
44Accepted237ms26444 KiB
45Accepted230ms29648 KiB
46Accepted231ms32352 KiB
47Accepted238ms34728 KiB
48Accepted201ms20264 KiB
49Accepted261ms35108 KiB
50Accepted239ms36012 KiB
subtask730/30
51Accepted1ms316 KiB
52Accepted217ms24232 KiB
53Accepted1ms316 KiB
54Accepted1ms500 KiB
55Accepted1ms316 KiB
56Accepted1ms500 KiB
57Accepted158ms21284 KiB
58Accepted165ms21220 KiB
59Accepted163ms20972 KiB
60Accepted192ms20172 KiB
61Accepted217ms36784 KiB
62Accepted224ms36264 KiB
63Accepted238ms36300 KiB
64Accepted284ms35132 KiB
65Accepted243ms36056 KiB
66Accepted233ms36036 KiB
67Accepted3ms564 KiB
68Accepted3ms760 KiB
69Accepted3ms564 KiB
70Accepted3ms564 KiB
71Accepted3ms564 KiB
72Accepted3ms564 KiB
73Accepted3ms564 KiB
74Accepted3ms564 KiB
75Accepted3ms568 KiB
76Accepted3ms568 KiB
77Accepted3ms564 KiB
78Accepted3ms536 KiB
79Accepted3ms564 KiB
80Accepted237ms22824 KiB
81Accepted246ms24120 KiB
82Accepted237ms26444 KiB
83Accepted230ms29648 KiB
84Accepted231ms32352 KiB
85Accepted238ms34728 KiB
86Accepted201ms20264 KiB
87Accepted261ms35108 KiB
88Accepted239ms36012 KiB
89Accepted239ms23728 KiB
90Accepted240ms23732 KiB
91Accepted337ms22956 KiB
92Accepted300ms22696 KiB
93Accepted243ms26844 KiB
94Accepted261ms29608 KiB
95Accepted261ms32176 KiB
96Accepted222ms25312 KiB
97Accepted206ms25764 KiB
98Accepted207ms26588 KiB
99Accepted229ms24232 KiB
100Accepted211ms25776 KiB
101Accepted212ms28584 KiB