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 |