3915 2023. 03. 05 13:02:18 zsombor Különböző katicák cpp17 Elfogadva 100/100 87ms 36760 KiB
#include <iostream>
#include <vector>
using namespace std;

int n;
bool lehet = true;
vector <vector <int>> g(1e5 + 1);
vector <int> f(1e5 + 1, 0);
vector <int> p(1e5 + 1, -1);
vector <int> mn(1e5 + 1, -1e9);
vector <int> mx(1e5 + 1, 1e9);
vector <int> par(1e5 + 1, -1);

void dfs1(int x) {
    if (p[x] > -1) {
        mn[x] = mx[x] = p[x];
        par[x] = p[x] % 2;
    }
    for (int i : g[x]) {
        dfs1(i);
        mn[x] = max(mn[x], mn[i] - 1);
        mx[x] = min(mx[x], mx[i] + 1);
        if (par[x] == -1 && par[i] > -1) par[x] = 1 - par[i];
        if (par[x] > -1 && par[i] > -1 && par[x] == par[i]) lehet = false;
    }
    if (mn[x] > mx[x]) lehet = false;
}

void dfs2(int x) {
    if (p[x] == -1) p[x] = (p[f[x]] + 1 <= mx[x] ? p[f[x]] + 1 : p[f[x]] - 1);
    for (int i : g[x]) dfs2(i);
}

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> f[i];
        g[f[i]].push_back(i);
    }
    for (int i = 1; i <= n; i++) cin >> p[i];
    dfs1(1);
    if (!lehet) { cout << "NEM"; return 0; }
    p[1] = (par[1] == -1 ? 0 : mn[1]);
    dfs2(1);
    cout << "IGEN\n";
    for (int i = 1; i <= n; i++) cout << p[i] << " ";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 7ms 10180 KiB
2 Elfogadva 6ms 10452 KiB
3 Elfogadva 71ms 14428 KiB
subtask2 10/10
4 Elfogadva 64ms 14160 KiB
5 Elfogadva 68ms 14848 KiB
6 Elfogadva 75ms 15408 KiB
7 Elfogadva 81ms 15748 KiB
subtask3 15/15
8 Elfogadva 71ms 35800 KiB
9 Elfogadva 68ms 35632 KiB
10 Elfogadva 87ms 36760 KiB
11 Elfogadva 82ms 36076 KiB
12 Elfogadva 82ms 35296 KiB
13 Elfogadva 83ms 36244 KiB
14 Elfogadva 78ms 34840 KiB
subtask4 35/35
15 Elfogadva 7ms 12488 KiB
16 Elfogadva 6ms 12616 KiB
17 Elfogadva 6ms 12700 KiB
18 Elfogadva 6ms 12836 KiB
19 Elfogadva 6ms 12780 KiB
20 Elfogadva 6ms 12780 KiB
21 Elfogadva 6ms 12912 KiB
22 Elfogadva 6ms 12900 KiB
subtask5 40/40
23 Elfogadva 74ms 16548 KiB
24 Elfogadva 65ms 16680 KiB
25 Elfogadva 67ms 16680 KiB
26 Elfogadva 75ms 16552 KiB
27 Elfogadva 75ms 16548 KiB
28 Elfogadva 82ms 16680 KiB
29 Elfogadva 82ms 16700 KiB
30 Elfogadva 79ms 16836 KiB
31 Elfogadva 76ms 16816 KiB
32 Elfogadva 81ms 16924 KiB
33 Elfogadva 86ms 16924 KiB