5289 2023. 04. 25 12:59:22 ZsofiaKeresztely Különböző katicák cpp14 Elfogadva 100/100 86ms 33796 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pii pair<int, int>
#define fi first
#define se second
vector<pii> iv;
vector<int> p, c, d;
vector<int> odd;
vector<vector<int> > g;
bool op = true;

void dfs1(int v){
    for (int x : g[v]){
        d[x] = d[v] + 1;
        dfs1(x);
        if (!op) return;
        iv[v].fi = max(iv[v].fi, iv[x].fi - 1);
        iv[v].se = min(iv[v].se, iv[x].se + 1);
        if (odd[v] == odd[x] && odd[v] >= 0 || iv[v].se < iv[v].fi){
            op = false;
            return;
        }
        if (odd[x] >=0) odd[v] = 1 - odd[x];
    }
}

void dfs2(int v){
    iv[v].fi = max(iv[v].fi, iv[p[v]].fi - 1);
    iv[v].se = min(iv[v].se, iv[p[v]].se + 1);
    if (odd[v] == odd[p[v]] && odd[v] >= 0 || iv[v].se < iv[v].fi){
        op = false;
        return;
    }
    if (odd[p[v]] >=0) odd[v] = 1 - odd[p[v]];
    for (int x : g[v]){
        dfs2(x);
    }
}

int main()
{
    //freopen("be3.txt", "r", stdin);
    int n;
    cin >> n;
    g.resize(n+1);
    p.resize(n+1);
    d.resize(n+1);
    c.resize(n+1);
    odd.assign(n+1, -1);
    iv.assign(n+1, {0, 1e9});
    for (int i=1; i<=n; i++){
        cin >> p[i];
        g[p[i]].push_back(i);
    }
    for (int i=1; i<=n; i++){
        cin >> c[i];
        if (c[i] >= 0){
            iv[i] = {c[i], c[i]};
            odd[i] = c[i] % 2;
        }
    }
    d[1] = 0;
    dfs1(1);
    if (!op){
        cout << "NEM";
        return 0;
    }
    dfs2(1);
    if (!op){
        cout << "NEM";
        return 0;
    }
    cout << "IGEN\n";
    if (iv[1].se == 1e9){
        for (int i=1; i<=n; i++){
            cout << d[i] << " ";
        }
    }
    else{
        for (int i=1; i<=n; i++){
            if (!iv[i].fi && odd[i]) cout << 1 << " ";
            else cout << iv[i].fi << " ";
        }
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1876 KiB
2 Elfogadva 3ms 2120 KiB
3 Elfogadva 74ms 14156 KiB
subtask2 10/10
4 Elfogadva 63ms 12924 KiB
5 Elfogadva 70ms 13800 KiB
6 Elfogadva 75ms 15100 KiB
7 Elfogadva 82ms 16356 KiB
subtask3 15/15
8 Elfogadva 70ms 32944 KiB
9 Elfogadva 71ms 32548 KiB
10 Elfogadva 86ms 33796 KiB
11 Elfogadva 83ms 32960 KiB
12 Elfogadva 82ms 32312 KiB
13 Elfogadva 85ms 33256 KiB
14 Elfogadva 78ms 32048 KiB
subtask4 35/35
15 Elfogadva 3ms 4000 KiB
16 Elfogadva 3ms 4048 KiB
17 Elfogadva 3ms 3916 KiB
18 Elfogadva 3ms 3916 KiB
19 Elfogadva 3ms 3912 KiB
20 Elfogadva 3ms 4168 KiB
21 Elfogadva 3ms 4376 KiB
22 Elfogadva 3ms 4336 KiB
subtask5 40/40
23 Elfogadva 75ms 16324 KiB
24 Elfogadva 65ms 17388 KiB
25 Elfogadva 65ms 17460 KiB
26 Elfogadva 75ms 16688 KiB
27 Elfogadva 75ms 16420 KiB
28 Elfogadva 82ms 17460 KiB
29 Elfogadva 81ms 17700 KiB
30 Elfogadva 78ms 17128 KiB
31 Elfogadva 79ms 17128 KiB
32 Elfogadva 78ms 17384 KiB
33 Elfogadva 86ms 18376 KiB