108352024-04-16 12:29:29TomaSajtVállalati ügyeletcpp17Elfogadva 100/100439ms158540 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1892 KiB
2Elfogadva214ms101308 KiB
subtask25/5
3Elfogadva3ms2196 KiB
4Elfogadva3ms2268 KiB
5Elfogadva3ms2500 KiB
6Elfogadva3ms2708 KiB
subtask38/8
7Elfogadva3ms2196 KiB
8Elfogadva3ms2268 KiB
9Elfogadva3ms2500 KiB
10Elfogadva3ms2708 KiB
11Elfogadva122ms59748 KiB
12Elfogadva143ms60980 KiB
13Elfogadva149ms62176 KiB
14Elfogadva259ms78100 KiB
subtask412/12
15Elfogadva3ms2196 KiB
16Elfogadva3ms2268 KiB
17Elfogadva3ms2500 KiB
18Elfogadva3ms2708 KiB
19Elfogadva157ms107280 KiB
20Elfogadva167ms108276 KiB
21Elfogadva172ms109704 KiB
22Elfogadva229ms125800 KiB
23Elfogadva201ms125880 KiB
24Elfogadva178ms116492 KiB
subtask517/17
25Elfogadva3ms2196 KiB
26Elfogadva3ms2268 KiB
27Elfogadva3ms2500 KiB
28Elfogadva3ms2708 KiB
29Elfogadva4ms4744 KiB
30Elfogadva4ms5096 KiB
31Elfogadva4ms5356 KiB
32Elfogadva4ms5364 KiB
33Elfogadva4ms5488 KiB
34Elfogadva4ms5252 KiB
35Elfogadva4ms5748 KiB
36Elfogadva4ms5636 KiB
37Elfogadva4ms5748 KiB
38Elfogadva4ms5276 KiB
39Elfogadva4ms5496 KiB
40Elfogadva4ms5652 KiB
41Elfogadva4ms5712 KiB
subtask628/28
42Elfogadva298ms123176 KiB
43Elfogadva250ms111028 KiB
44Elfogadva215ms110104 KiB
45Elfogadva225ms114736 KiB
46Elfogadva221ms120164 KiB
47Elfogadva196ms124948 KiB
48Elfogadva219ms80300 KiB
49Elfogadva229ms127088 KiB
50Elfogadva200ms127100 KiB
subtask730/30
51Elfogadva3ms5252 KiB
52Elfogadva215ms104420 KiB
53Elfogadva3ms2196 KiB
54Elfogadva3ms2268 KiB
55Elfogadva3ms2500 KiB
56Elfogadva3ms2708 KiB
57Elfogadva122ms59748 KiB
58Elfogadva143ms60980 KiB
59Elfogadva149ms62176 KiB
60Elfogadva259ms78100 KiB
61Elfogadva157ms107280 KiB
62Elfogadva167ms108276 KiB
63Elfogadva172ms109704 KiB
64Elfogadva229ms125800 KiB
65Elfogadva201ms125880 KiB
66Elfogadva178ms116492 KiB
67Elfogadva4ms4744 KiB
68Elfogadva4ms5096 KiB
69Elfogadva4ms5356 KiB
70Elfogadva4ms5364 KiB
71Elfogadva4ms5488 KiB
72Elfogadva4ms5252 KiB
73Elfogadva4ms5748 KiB
74Elfogadva4ms5636 KiB
75Elfogadva4ms5748 KiB
76Elfogadva4ms5276 KiB
77Elfogadva4ms5496 KiB
78Elfogadva4ms5652 KiB
79Elfogadva4ms5712 KiB
80Elfogadva298ms123176 KiB
81Elfogadva250ms111028 KiB
82Elfogadva215ms110104 KiB
83Elfogadva225ms114736 KiB
84Elfogadva221ms120164 KiB
85Elfogadva196ms124948 KiB
86Elfogadva219ms80300 KiB
87Elfogadva229ms127088 KiB
88Elfogadva200ms127100 KiB
89Elfogadva275ms99528 KiB
90Elfogadva287ms106356 KiB
91Elfogadva412ms146600 KiB
92Elfogadva439ms158540 KiB
93Elfogadva216ms103180 KiB
94Elfogadva222ms113836 KiB
95Elfogadva250ms124508 KiB
96Elfogadva212ms101092 KiB
97Elfogadva214ms100452 KiB
98Elfogadva207ms100632 KiB
99Elfogadva234ms110208 KiB
100Elfogadva221ms103184 KiB
101Elfogadva209ms107364 KiB