108022024-04-14 11:48:20AblablablaVállalati ügyeletcpp17Elfogadva 100/100587ms155764 KiB
#include <bits/stdc++.h>

using namespace std;

vector<int> ans;
vector<set<int>> lefed;
vector<vector<int>> csucsok;
vector<int> vallal;

void dfs(int akt, int elozo){
    int maxi = 1;
    lefed[akt].insert(vallal[akt]);
    for(int x : csucsok[akt]){
        assert(x != elozo);

        dfs(x, akt);
        maxi = max(maxi, ans[x]);

        if(lefed[akt].size() < lefed[x].size()){
            swap(lefed[akt], lefed[x]);
        }

        for(int y : lefed[x]){
            lefed[akt].insert(y);
        }
    }

    while(lefed[akt].count(maxi) > 0){
        maxi++;
    }

    ans[akt] = maxi;
}

int main()
{
    int n;
    cin >> n;

    vector<int> szulo(n);
    for(int &x : szulo){
        cin >> x;
        x--;
    }

    csucsok.assign(n, vector<int>());
    for(int i = 1; i < n; i++){
        csucsok[szulo[i]].push_back(i);
    }

    vallal.assign(n, 0);
    for(int &x : vallal){
        cin >> x;
    }

    ans.assign(n, 1);
    lefed.assign(n, set<int>());

    dfs(0, -1);

    for(int x : ans){
        cout << x << " ";
    }
    cout << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1808 KiB
2Elfogadva314ms99064 KiB
subtask25/5
3Elfogadva3ms2384 KiB
4Elfogadva3ms2480 KiB
5Elfogadva3ms2636 KiB
6Elfogadva3ms2872 KiB
subtask38/8
7Elfogadva3ms2384 KiB
8Elfogadva3ms2480 KiB
9Elfogadva3ms2636 KiB
10Elfogadva3ms2872 KiB
11Elfogadva184ms57120 KiB
12Elfogadva194ms58148 KiB
13Elfogadva211ms58972 KiB
14Elfogadva303ms75348 KiB
subtask412/12
15Elfogadva3ms2384 KiB
16Elfogadva3ms2480 KiB
17Elfogadva3ms2636 KiB
18Elfogadva3ms2872 KiB
19Elfogadva256ms112236 KiB
20Elfogadva263ms113232 KiB
21Elfogadva270ms114344 KiB
22Elfogadva358ms130256 KiB
23Elfogadva326ms130428 KiB
24Elfogadva284ms121040 KiB
subtask517/17
25Elfogadva3ms2384 KiB
26Elfogadva3ms2480 KiB
27Elfogadva3ms2636 KiB
28Elfogadva3ms2872 KiB
29Elfogadva4ms4520 KiB
30Elfogadva4ms5044 KiB
31Elfogadva4ms5040 KiB
32Elfogadva6ms5064 KiB
33Elfogadva6ms5084 KiB
34Elfogadva4ms4648 KiB
35Elfogadva6ms5420 KiB
36Elfogadva4ms5104 KiB
37Elfogadva6ms5356 KiB
38Elfogadva6ms5340 KiB
39Elfogadva4ms5260 KiB
40Elfogadva6ms5396 KiB
41Elfogadva4ms5640 KiB
subtask628/28
42Elfogadva409ms120712 KiB
43Elfogadva367ms109276 KiB
44Elfogadva337ms109512 KiB
45Elfogadva335ms115488 KiB
46Elfogadva338ms122412 KiB
47Elfogadva314ms128352 KiB
48Elfogadva324ms77076 KiB
49Elfogadva356ms131460 KiB
50Elfogadva326ms131592 KiB
subtask730/30
51Elfogadva3ms5056 KiB
52Elfogadva314ms101840 KiB
53Elfogadva3ms2384 KiB
54Elfogadva3ms2480 KiB
55Elfogadva3ms2636 KiB
56Elfogadva3ms2872 KiB
57Elfogadva184ms57120 KiB
58Elfogadva194ms58148 KiB
59Elfogadva211ms58972 KiB
60Elfogadva303ms75348 KiB
61Elfogadva256ms112236 KiB
62Elfogadva263ms113232 KiB
63Elfogadva270ms114344 KiB
64Elfogadva358ms130256 KiB
65Elfogadva326ms130428 KiB
66Elfogadva284ms121040 KiB
67Elfogadva4ms4520 KiB
68Elfogadva4ms5044 KiB
69Elfogadva4ms5040 KiB
70Elfogadva6ms5064 KiB
71Elfogadva6ms5084 KiB
72Elfogadva4ms4648 KiB
73Elfogadva6ms5420 KiB
74Elfogadva4ms5104 KiB
75Elfogadva6ms5356 KiB
76Elfogadva6ms5340 KiB
77Elfogadva4ms5260 KiB
78Elfogadva6ms5396 KiB
79Elfogadva4ms5640 KiB
80Elfogadva409ms120712 KiB
81Elfogadva367ms109276 KiB
82Elfogadva337ms109512 KiB
83Elfogadva335ms115488 KiB
84Elfogadva338ms122412 KiB
85Elfogadva314ms128352 KiB
86Elfogadva324ms77076 KiB
87Elfogadva356ms131460 KiB
88Elfogadva326ms131592 KiB
89Elfogadva365ms96632 KiB
90Elfogadva361ms103472 KiB
91Elfogadva587ms143808 KiB
92Elfogadva546ms155764 KiB
93Elfogadva314ms102608 KiB
94Elfogadva365ms114800 KiB
95Elfogadva349ms127332 KiB
96Elfogadva331ms98836 KiB
97Elfogadva293ms98340 KiB
98Elfogadva296ms99724 KiB
99Elfogadva342ms107816 KiB
100Elfogadva321ms101844 KiB
101Elfogadva305ms107548 KiB