10835 2024. 04. 16 12:29:29 TomaSajt Vállalati ügyelet cpp17 Elfogadva 100/100 439ms 158540 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;

vector<vector<int>> g;
vector<set<int>> subtree_sets;
vector<int> val;
vector<int> mexes;

void dfs(int u) {
  subtree_sets[u].insert(val[u]);
  for (int v : g[u]) {
    dfs(v);
    mexes[u] = max(mexes[u], mexes[v]);
    if (subtree_sets[u].size() < subtree_sets[v].size()) swap(subtree_sets[u], subtree_sets[v]);
    subtree_sets[u].insert(subtree_sets[v].begin(), subtree_sets[v].end());
  }
  auto it = subtree_sets[u].lower_bound(mexes[u]);
  while (it != subtree_sets[u].end() && *it == mexes[u]) mexes[u]++, it++;
}

signed main() {
  ios::sync_with_stdio(0), cin.tie(0);
  int n;
  cin >> n;
  g.resize(n + 1);
  subtree_sets.resize(n + 1);
  mexes.resize(n + 1, 1);
  val.resize(n + 1);
  for (int i = 1; i <= n; i++) {
    int p;
    cin >> p;
    g[p].push_back(i);
  }
  for (int i = 1; i <= n; i++) cin >> val[i];
  dfs(1);
  for (int i = 1; i <= n; i++) cout << mexes[i] << ' ';
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1892 KiB
2 Elfogadva 214ms 101308 KiB
subtask2 5/5
3 Elfogadva 3ms 2196 KiB
4 Elfogadva 3ms 2268 KiB
5 Elfogadva 3ms 2500 KiB
6 Elfogadva 3ms 2708 KiB
subtask3 8/8
7 Elfogadva 3ms 2196 KiB
8 Elfogadva 3ms 2268 KiB
9 Elfogadva 3ms 2500 KiB
10 Elfogadva 3ms 2708 KiB
11 Elfogadva 122ms 59748 KiB
12 Elfogadva 143ms 60980 KiB
13 Elfogadva 149ms 62176 KiB
14 Elfogadva 259ms 78100 KiB
subtask4 12/12
15 Elfogadva 3ms 2196 KiB
16 Elfogadva 3ms 2268 KiB
17 Elfogadva 3ms 2500 KiB
18 Elfogadva 3ms 2708 KiB
19 Elfogadva 157ms 107280 KiB
20 Elfogadva 167ms 108276 KiB
21 Elfogadva 172ms 109704 KiB
22 Elfogadva 229ms 125800 KiB
23 Elfogadva 201ms 125880 KiB
24 Elfogadva 178ms 116492 KiB
subtask5 17/17
25 Elfogadva 3ms 2196 KiB
26 Elfogadva 3ms 2268 KiB
27 Elfogadva 3ms 2500 KiB
28 Elfogadva 3ms 2708 KiB
29 Elfogadva 4ms 4744 KiB
30 Elfogadva 4ms 5096 KiB
31 Elfogadva 4ms 5356 KiB
32 Elfogadva 4ms 5364 KiB
33 Elfogadva 4ms 5488 KiB
34 Elfogadva 4ms 5252 KiB
35 Elfogadva 4ms 5748 KiB
36 Elfogadva 4ms 5636 KiB
37 Elfogadva 4ms 5748 KiB
38 Elfogadva 4ms 5276 KiB
39 Elfogadva 4ms 5496 KiB
40 Elfogadva 4ms 5652 KiB
41 Elfogadva 4ms 5712 KiB
subtask6 28/28
42 Elfogadva 298ms 123176 KiB
43 Elfogadva 250ms 111028 KiB
44 Elfogadva 215ms 110104 KiB
45 Elfogadva 225ms 114736 KiB
46 Elfogadva 221ms 120164 KiB
47 Elfogadva 196ms 124948 KiB
48 Elfogadva 219ms 80300 KiB
49 Elfogadva 229ms 127088 KiB
50 Elfogadva 200ms 127100 KiB
subtask7 30/30
51 Elfogadva 3ms 5252 KiB
52 Elfogadva 215ms 104420 KiB
53 Elfogadva 3ms 2196 KiB
54 Elfogadva 3ms 2268 KiB
55 Elfogadva 3ms 2500 KiB
56 Elfogadva 3ms 2708 KiB
57 Elfogadva 122ms 59748 KiB
58 Elfogadva 143ms 60980 KiB
59 Elfogadva 149ms 62176 KiB
60 Elfogadva 259ms 78100 KiB
61 Elfogadva 157ms 107280 KiB
62 Elfogadva 167ms 108276 KiB
63 Elfogadva 172ms 109704 KiB
64 Elfogadva 229ms 125800 KiB
65 Elfogadva 201ms 125880 KiB
66 Elfogadva 178ms 116492 KiB
67 Elfogadva 4ms 4744 KiB
68 Elfogadva 4ms 5096 KiB
69 Elfogadva 4ms 5356 KiB
70 Elfogadva 4ms 5364 KiB
71 Elfogadva 4ms 5488 KiB
72 Elfogadva 4ms 5252 KiB
73 Elfogadva 4ms 5748 KiB
74 Elfogadva 4ms 5636 KiB
75 Elfogadva 4ms 5748 KiB
76 Elfogadva 4ms 5276 KiB
77 Elfogadva 4ms 5496 KiB
78 Elfogadva 4ms 5652 KiB
79 Elfogadva 4ms 5712 KiB
80 Elfogadva 298ms 123176 KiB
81 Elfogadva 250ms 111028 KiB
82 Elfogadva 215ms 110104 KiB
83 Elfogadva 225ms 114736 KiB
84 Elfogadva 221ms 120164 KiB
85 Elfogadva 196ms 124948 KiB
86 Elfogadva 219ms 80300 KiB
87 Elfogadva 229ms 127088 KiB
88 Elfogadva 200ms 127100 KiB
89 Elfogadva 275ms 99528 KiB
90 Elfogadva 287ms 106356 KiB
91 Elfogadva 412ms 146600 KiB
92 Elfogadva 439ms 158540 KiB
93 Elfogadva 216ms 103180 KiB
94 Elfogadva 222ms 113836 KiB
95 Elfogadva 250ms 124508 KiB
96 Elfogadva 212ms 101092 KiB
97 Elfogadva 214ms 100452 KiB
98 Elfogadva 207ms 100632 KiB
99 Elfogadva 234ms 110208 KiB
100 Elfogadva 221ms 103184 KiB
101 Elfogadva 209ms 107364 KiB