5110 2023. 04. 17 18:24:48 rmlan Különböző katicák cpp14 Hibás válasz 0/100 82ms 39700 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 Hibás válasz 3ms 1880 KiB
2 Elfogadva 3ms 2116 KiB
3 Hibás válasz 64ms 16936 KiB
subtask2 0/10
4 Hibás válasz 56ms 15852 KiB
5 Hibás válasz 61ms 17020 KiB
6 Hibás válasz 65ms 18044 KiB
7 Hibás válasz 71ms 19228 KiB
subtask3 0/15
8 Elfogadva 81ms 38836 KiB
9 Elfogadva 79ms 38748 KiB
10 Hibás válasz 82ms 39700 KiB
11 Hibás válasz 79ms 38832 KiB
12 Hibás válasz 75ms 38444 KiB
13 Hibás válasz 81ms 39048 KiB
14 Hibás válasz 75ms 37844 KiB
subtask4 0/35
15 Hibás válasz 3ms 4288 KiB
16 Elfogadva 3ms 4248 KiB
17 Elfogadva 3ms 4500 KiB
18 Hibás válasz 3ms 4528 KiB
19 Hibás válasz 3ms 4532 KiB
20 Hibás válasz 3ms 4536 KiB
21 Hibás válasz 3ms 4452 KiB
22 Hibás válasz 3ms 4460 KiB
subtask5 0/40
23 Hibás válasz 68ms 19672 KiB
24 Elfogadva 71ms 20224 KiB
25 Elfogadva 72ms 20592 KiB
26 Hibás válasz 68ms 19856 KiB
27 Hibás válasz 68ms 19640 KiB
28 Hibás válasz 72ms 20272 KiB
29 Hibás válasz 71ms 20340 KiB
30 Hibás válasz 70ms 20008 KiB
31 Hibás válasz 68ms 19812 KiB
32 Hibás válasz 71ms 20096 KiB
33 Hibás válasz 75ms 20576 KiB