5109 2023. 04. 17 18:20:50 rmlan Különböző katicák cpp14 Hibás válasz 10/100 96ms 39228 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].second%2 == l[u].second%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].second%2 == l[fi].second%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 << " ";
    }
/*for(pair<int, int> a:l){
        cout << a.first <<" " << a.second<< endl;
    }*/
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1748 KiB
2 Elfogadva 3ms 1992 KiB
3 Hibás válasz 75ms 16648 KiB
subtask2 10/10
4 Elfogadva 64ms 15488 KiB
5 Elfogadva 72ms 16620 KiB
6 Elfogadva 78ms 17640 KiB
7 Elfogadva 86ms 18720 KiB
subtask3 0/15
8 Elfogadva 79ms 38004 KiB
9 Elfogadva 79ms 38016 KiB
10 Hibás válasz 96ms 39228 KiB
11 Hibás válasz 90ms 38640 KiB
12 Hibás válasz 89ms 37744 KiB
13 Hibás válasz 89ms 38776 KiB
14 Elfogadva 86ms 37396 KiB
subtask4 0/35
15 Elfogadva 3ms 3812 KiB
16 Hibás válasz 3ms 3772 KiB
17 Hibás válasz 3ms 4024 KiB
18 Hibás válasz 3ms 4056 KiB
19 Hibás válasz 3ms 4056 KiB
20 Hibás válasz 3ms 4312 KiB
21 Hibás válasz 3ms 4444 KiB
22 Hibás válasz 3ms 4392 KiB
subtask5 0/40
23 Elfogadva 79ms 19224 KiB
24 Elfogadva 71ms 19872 KiB
25 Hibás válasz 86ms 20244 KiB
26 Hibás válasz 79ms 19500 KiB
27 Hibás válasz 79ms 19336 KiB
28 Hibás válasz 83ms 20032 KiB
29 Hibás válasz 83ms 19992 KiB
30 Hibás válasz 79ms 19660 KiB
31 Hibás válasz 81ms 19460 KiB
32 Hibás válasz 82ms 19636 KiB
33 Hibás válasz 89ms 20228 KiB