109232024-04-19 11:36:36k_balintVállalati ügyeletcpp17Accepted 100/100509ms160660 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=2e5+5;

int n;
vector<int> adj[c];
int arr[c], ans[c];
set<int> s[c];

void dfs(int v, int p){
    for(int x:adj[v]){
        if(x != p) dfs(x,v);
    }

    s[v].insert(arr[v]);
    ans[v]=1;
    for(int x:adj[v]){
        if(x==p) continue;
        ans[v]=max(ans[v],ans[x]);
        if(s[x].size() > s[v].size()) swap(s[x],s[v]);
        for(int y:s[x]) s[v].insert(y);
    }

    while(s[v].find(ans[v]) != s[v].end()) ++ans[v];
}

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

    cin>>n;
    for(int i=1;i<=n;i++){
        int p; cin>>p;
        if(p != 0){
            adj[i].push_back(p);
            adj[p].push_back(i);
        }
    }

    for(int i=1;i<=n;i++) cin>>arr[i];
    dfs(1,0);
    for(int i=1;i<=n;i++){
        cout << ans[i] << ' ';
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted13ms30048 KiB
2Accepted241ms102988 KiB
subtask25/5
3Accepted13ms30580 KiB
4Accepted13ms30908 KiB
5Accepted13ms30864 KiB
6Accepted14ms31196 KiB
subtask38/8
7Accepted13ms30580 KiB
8Accepted13ms30908 KiB
9Accepted13ms30864 KiB
10Accepted14ms31196 KiB
11Accepted127ms68024 KiB
12Accepted143ms69016 KiB
13Accepted143ms69860 KiB
14Accepted240ms86020 KiB
subtask412/12
15Accepted13ms30580 KiB
16Accepted13ms30908 KiB
17Accepted13ms30864 KiB
18Accepted14ms31196 KiB
19Accepted192ms116924 KiB
20Accepted204ms118088 KiB
21Accepted210ms119020 KiB
22Accepted310ms135184 KiB
23Accepted231ms135196 KiB
24Accepted202ms125804 KiB
subtask517/17
25Accepted13ms30580 KiB
26Accepted13ms30908 KiB
27Accepted13ms30864 KiB
28Accepted14ms31196 KiB
29Accepted14ms32344 KiB
30Accepted14ms32836 KiB
31Accepted14ms32840 KiB
32Accepted14ms32608 KiB
33Accepted17ms32908 KiB
34Accepted14ms32600 KiB
35Accepted14ms33084 KiB
36Accepted17ms33136 KiB
37Accepted16ms33368 KiB
38Accepted14ms33172 KiB
39Accepted17ms33356 KiB
40Accepted16ms33492 KiB
41Accepted14ms33424 KiB
subtask628/28
42Accepted324ms125472 KiB
43Accepted287ms114312 KiB
44Accepted247ms115264 KiB
45Accepted245ms121624 KiB
46Accepted238ms128080 KiB
47Accepted241ms133596 KiB
48Accepted214ms87568 KiB
49Accepted358ms136172 KiB
50Accepted233ms136088 KiB
subtask730/30
51Accepted13ms32756 KiB
52Accepted240ms105428 KiB
53Accepted13ms30580 KiB
54Accepted13ms30908 KiB
55Accepted13ms30864 KiB
56Accepted14ms31196 KiB
57Accepted127ms68024 KiB
58Accepted143ms69016 KiB
59Accepted143ms69860 KiB
60Accepted240ms86020 KiB
61Accepted192ms116924 KiB
62Accepted204ms118088 KiB
63Accepted210ms119020 KiB
64Accepted310ms135184 KiB
65Accepted231ms135196 KiB
66Accepted202ms125804 KiB
67Accepted14ms32344 KiB
68Accepted14ms32836 KiB
69Accepted14ms32840 KiB
70Accepted14ms32608 KiB
71Accepted17ms32908 KiB
72Accepted14ms32600 KiB
73Accepted14ms33084 KiB
74Accepted17ms33136 KiB
75Accepted16ms33368 KiB
76Accepted14ms33172 KiB
77Accepted17ms33356 KiB
78Accepted16ms33492 KiB
79Accepted14ms33424 KiB
80Accepted324ms125472 KiB
81Accepted287ms114312 KiB
82Accepted247ms115264 KiB
83Accepted245ms121624 KiB
84Accepted238ms128080 KiB
85Accepted241ms133596 KiB
86Accepted214ms87568 KiB
87Accepted358ms136172 KiB
88Accepted233ms136088 KiB
89Accepted286ms101404 KiB
90Accepted361ms108496 KiB
91Accepted509ms148916 KiB
92Accepted472ms160660 KiB
93Accepted246ms106228 KiB
94Accepted270ms119128 KiB
95Accepted298ms131784 KiB
96Accepted239ms102372 KiB
97Accepted224ms101940 KiB
98Accepted216ms103340 KiB
99Accepted287ms112800 KiB
100Accepted233ms106332 KiB
101Accepted222ms112028 KiB