5109 | 2023-04-17 18:20:50 | rmlan | Különböző katicák | cpp14 | Hibás válasz 10/100 | 96ms | 39228 KiB |
#include<bits/stdc++.h>
using namespace std;
int n;
bool jo=1;
vector<int> p,m;
vector<pair<int, int> > l,e;
vector<vector<int>> g;
void dfs1(int u){
for(int v:g[u]){
dfs1(v);
e.push_back({v,u});
if(l[u].first == 0 && l[u].second == 1e6) continue;
l[v].first = max(max(l[v].first, l[u].first-1),0);
l[v].second = min(l[v].second, l[u].second+1);
if(l[v].second%2 == l[u].second%2 || l[v].first > l[v].second) jo=0;
}
}
int main(){
pair<int, int> df = {0,1e6};
cin >> n;
p.resize(n+1);
l.resize(n+1);
g.resize(n+1);
m.resize(n+1);
for(int i = 1; i <= n; i++){
l[i] = {0, 1e6};
cin>>p[i];
g[p[i]].push_back(i);
}
for(int i = 1; i <= n; i++){
cin >> m[i];
if(m[i] != -1) l[i]={m[i], m[i]};
}
dfs1(1);
reverse(e.begin(), e.end());
for(pair<int, int> pa:e){
int fi=pa.first,se=pa.second;
if(l[se]!=df && l[fi]!=df &&l[se].second%2 == l[fi].second%2) jo=0;
l[se].first=max(max(l[se].first, l[fi].first-1),0);
l[se].second=min(l[se].second, l[fi].second+1);
if(l[se].first > l[se].second) jo = 0;
}
dfs1(1);
if(!jo){
cout << "NEM";
return 0;
}
cout << "IGEN\n";
for(int i = 1; i <= n; i++){
if(l[1] == df){
cout << m[p[i]]+1 << " ";
m[i] = m[p[i]]+1;
continue;
}
cout << l[i].second << " ";
}
/*for(pair<int, int> a:l){
cout << a.first <<" " << a.second<< endl;
}*/
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 3ms | 1748 KiB | ||||
2 | Elfogadva | 3ms | 1992 KiB | ||||
3 | Hibás válasz | 75ms | 16648 KiB | ||||
subtask2 | 10/10 | ||||||
4 | Elfogadva | 64ms | 15488 KiB | ||||
5 | Elfogadva | 72ms | 16620 KiB | ||||
6 | Elfogadva | 78ms | 17640 KiB | ||||
7 | Elfogadva | 86ms | 18720 KiB | ||||
subtask3 | 0/15 | ||||||
8 | Elfogadva | 79ms | 38004 KiB | ||||
9 | Elfogadva | 79ms | 38016 KiB | ||||
10 | Hibás válasz | 96ms | 39228 KiB | ||||
11 | Hibás válasz | 90ms | 38640 KiB | ||||
12 | Hibás válasz | 89ms | 37744 KiB | ||||
13 | Hibás válasz | 89ms | 38776 KiB | ||||
14 | Elfogadva | 86ms | 37396 KiB | ||||
subtask4 | 0/35 | ||||||
15 | Elfogadva | 3ms | 3812 KiB | ||||
16 | Hibás válasz | 3ms | 3772 KiB | ||||
17 | Hibás válasz | 3ms | 4024 KiB | ||||
18 | Hibás válasz | 3ms | 4056 KiB | ||||
19 | Hibás válasz | 3ms | 4056 KiB | ||||
20 | Hibás válasz | 3ms | 4312 KiB | ||||
21 | Hibás válasz | 3ms | 4444 KiB | ||||
22 | Hibás válasz | 3ms | 4392 KiB | ||||
subtask5 | 0/40 | ||||||
23 | Elfogadva | 79ms | 19224 KiB | ||||
24 | Elfogadva | 71ms | 19872 KiB | ||||
25 | Hibás válasz | 86ms | 20244 KiB | ||||
26 | Hibás válasz | 79ms | 19500 KiB | ||||
27 | Hibás válasz | 79ms | 19336 KiB | ||||
28 | Hibás válasz | 83ms | 20032 KiB | ||||
29 | Hibás válasz | 83ms | 19992 KiB | ||||
30 | Hibás válasz | 79ms | 19660 KiB | ||||
31 | Hibás válasz | 81ms | 19460 KiB | ||||
32 | Hibás válasz | 82ms | 19636 KiB | ||||
33 | Hibás válasz | 89ms | 20228 KiB |