5107 2023. 04. 17 17:51:23 rmlan Különböző katicák cpp14 Hibás válasz 10/100 90ms 39500 KiB
#include<bits/stdc++.h>
using namespace std;

int n;
bool jo=1;
vector<int> p,m;
vector<pair<int, int> > l,e;
vector<vector<int>> g;

void dfs1(int u){
    for(int v:g[u]){
        dfs1(v);
        e.push_back({v,u});
        if(l[u].first == 0 && l[u].second == 1e6) continue;

        l[v].first = max(max(l[v].first, l[u].first-1),0);
        l[v].second = min(l[v].second, l[u].second+1);
        if(l[v].first%2 == l[u].first%2 || l[v].first > l[v].second) jo=0;
    }
}

int main(){
    pair<int, int> df = {0,1e6};
    cin >> n;
    p.resize(n+1);
    l.resize(n+1);
    g.resize(n+1);
    m.resize(n+1);


    for(int i = 1; i <= n; i++){
        l[i] = {0, 1e6};
        cin>>p[i];
        g[p[i]].push_back(i);

    }
    for(int i = 1; i <= n; i++){
        cin >> m[i];
        if(m[i] != -1) l[i]={m[i], m[i]};
    }
    dfs1(1);
    reverse(e.begin(), e.end());
    for(pair<int, int> pa:e){
        int fi=pa.first,se=pa.second;
        if(l[se]!=df && l[fi]!=df &&l[se].first%2 == l[fi].first%2) jo=0;
        l[se].first=max(max(l[se].first, l[fi].first-1),0);
        l[se].second=min(l[se].second, l[fi].second+1);
        if(l[se].first > l[se].second) jo = 0;
    }
    dfs1(1);
    if(!jo){
        cout << "NEM";
        return 0;
    }
    cout << "IGEN\n";

    for(int i = 1; i <= n; i++){
        if(l[1] == df){
            cout << m[p[i]]+1 << " ";
            m[i] = m[p[i]]+1;
            continue;
        }
        cout << l[i].second << " ";
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1876 KiB
2 Elfogadva 3ms 2120 KiB
3 Hibás válasz 68ms 16900 KiB
subtask2 10/10
4 Elfogadva 67ms 15888 KiB
5 Elfogadva 72ms 17036 KiB
6 Elfogadva 78ms 18060 KiB
7 Elfogadva 86ms 19376 KiB
subtask3 0/15
8 Elfogadva 82ms 38824 KiB
9 Elfogadva 76ms 38660 KiB
10 Hibás válasz 86ms 39500 KiB
11 Hibás válasz 89ms 38820 KiB
12 Hibás válasz 79ms 38232 KiB
13 Hibás válasz 79ms 39008 KiB
14 Elfogadva 86ms 37544 KiB
subtask4 0/35
15 Elfogadva 3ms 3776 KiB
16 Elfogadva 3ms 3784 KiB
17 Hibás válasz 3ms 3804 KiB
18 Hibás válasz 3ms 3900 KiB
19 Hibás válasz 3ms 4072 KiB
20 Hibás válasz 3ms 4032 KiB
21 Hibás válasz 3ms 4028 KiB
22 Hibás válasz 3ms 4456 KiB
subtask5 0/40
23 Elfogadva 78ms 19224 KiB
24 Elfogadva 74ms 19780 KiB
25 Elfogadva 75ms 20132 KiB
26 Hibás válasz 81ms 19276 KiB
27 Hibás válasz 79ms 19176 KiB
28 Hibás válasz 85ms 19996 KiB
29 Hibás válasz 71ms 20060 KiB
30 Hibás válasz 68ms 19760 KiB
31 Hibás válasz 71ms 19476 KiB
32 Hibás válasz 83ms 19500 KiB
33 Hibás válasz 90ms 20344 KiB