5288 2023. 04. 25 12:47:46 ZsofiaKeresztely Különböző katicák cpp14 Hibás válasz 10/100 87ms 36752 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()
{
    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++){
            cout << iv[i].fi << " ";
        }
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1876 KiB
2 Elfogadva 3ms 2068 KiB
3 Hibás válasz 75ms 14928 KiB
subtask2 10/10
4 Elfogadva 64ms 13952 KiB
5 Elfogadva 70ms 16316 KiB
6 Elfogadva 76ms 18256 KiB
7 Elfogadva 82ms 19664 KiB
subtask3 0/15
8 Elfogadva 71ms 35852 KiB
9 Elfogadva 71ms 35716 KiB
10 Hibás válasz 87ms 36752 KiB
11 Hibás válasz 85ms 35912 KiB
12 Elfogadva 82ms 35520 KiB
13 Elfogadva 86ms 36248 KiB
14 Elfogadva 81ms 35056 KiB
subtask4 0/35
15 Elfogadva 3ms 6872 KiB
16 Elfogadva 3ms 6872 KiB
17 Elfogadva 3ms 6996 KiB
18 Hibás válasz 3ms 7008 KiB
19 Elfogadva 3ms 7260 KiB
20 Hibás válasz 3ms 7228 KiB
21 Hibás válasz 3ms 7212 KiB
22 Elfogadva 3ms 7224 KiB
subtask5 0/40
23 Elfogadva 75ms 19204 KiB
24 Elfogadva 64ms 20244 KiB
25 Elfogadva 65ms 20460 KiB
26 Hibás válasz 75ms 19748 KiB
27 Hibás válasz 75ms 19436 KiB
28 Elfogadva 81ms 20348 KiB
29 Hibás válasz 81ms 20624 KiB
30 Hibás válasz 79ms 19840 KiB
31 Hibás válasz 76ms 19836 KiB
32 Hibás válasz 78ms 19840 KiB
33 Hibás válasz 83ms 20796 KiB