5111 | 2023-04-17 22:46:26 | nmarci | Különböző katicák | cpp11 | Elfogadva 100/100 | 87ms | 32352 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
int p[100100];
vector<int> g[100100];
int f[100100];
pair<int,int> s[100100];
void dfs(int node){
s[node] = {p[node], p[node]};
for(auto i : g[node]){
dfs(i);
int l = s[i].first, r = s[i].second;
if(l != -1 && r != -1){
if(l == 0){
++l;
}
else{
--l;
}
++r;
if(s[node].first == -1){
s[node] = {l, r};
}
else if(s[node].first % 2 != l % 2 || r < s[node].first || l > s[node].second){
cout << "NEM" << endl;
exit(0);
}
if(p[node] == -1){
s[node].first = max(s[node].first, l);
s[node].second = min(s[node].second, r);
}
}
}
}
void c(int node){
if(p[node] == -1){
int l = s[node].first, r = s[node].second;
if(l <= p[f[node]] - 1 && r >= p[f[node]] - 1 && p[f[node]] - 1 >= 0){
p[node] = p[f[node]] - 1;
}
else{
p[node] = p[f[node]] + 1;
}
}
for(auto i : g[node]){
c(i);
}
}
int main(){
int n;
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];
}
dfs(1);
if(p[1] == -1){
p[1] = s[1].first;
}
c(1);
cout << "IGEN" << endl;
for(int i = 1; i <= n; ++i){
cout << p[i] << " ";
}
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 4ms | 6664 KiB | ||||
2 | Elfogadva | 4ms | 6856 KiB | ||||
3 | Elfogadva | 71ms | 13400 KiB | ||||
subtask2 | 10/10 | ||||||
4 | Elfogadva | 61ms | 12828 KiB | ||||
5 | Elfogadva | 68ms | 13632 KiB | ||||
6 | Elfogadva | 75ms | 14444 KiB | ||||
7 | Elfogadva | 79ms | 14848 KiB | ||||
subtask3 | 15/15 | ||||||
8 | Elfogadva | 68ms | 31644 KiB | ||||
9 | Elfogadva | 67ms | 31680 KiB | ||||
10 | Elfogadva | 87ms | 32352 KiB | ||||
11 | Elfogadva | 81ms | 31788 KiB | ||||
12 | Elfogadva | 82ms | 31344 KiB | ||||
13 | Elfogadva | 83ms | 32244 KiB | ||||
14 | Elfogadva | 79ms | 31232 KiB | ||||
subtask4 | 35/35 | ||||||
15 | Elfogadva | 4ms | 8444 KiB | ||||
16 | Elfogadva | 4ms | 8564 KiB | ||||
17 | Elfogadva | 4ms | 8840 KiB | ||||
18 | Elfogadva | 4ms | 9076 KiB | ||||
19 | Elfogadva | 4ms | 9060 KiB | ||||
20 | Elfogadva | 4ms | 8960 KiB | ||||
21 | Elfogadva | 4ms | 9096 KiB | ||||
22 | Elfogadva | 4ms | 9192 KiB | ||||
subtask5 | 40/40 | ||||||
23 | Elfogadva | 74ms | 15604 KiB | ||||
24 | Elfogadva | 64ms | 15144 KiB | ||||
25 | Elfogadva | 67ms | 14756 KiB | ||||
26 | Elfogadva | 74ms | 15716 KiB | ||||
27 | Elfogadva | 74ms | 15736 KiB | ||||
28 | Elfogadva | 79ms | 16052 KiB | ||||
29 | Elfogadva | 79ms | 16276 KiB | ||||
30 | Elfogadva | 75ms | 16156 KiB | ||||
31 | Elfogadva | 75ms | 15972 KiB | ||||
32 | Elfogadva | 79ms | 16140 KiB | ||||
33 | Elfogadva | 82ms | 16436 KiB |