5369 | 2023. 04. 26 19:05:32 | kohumark | Különböző katicák | cpp17 | Hibás válasz 0/100 | 600ms | 130792 KiB |
#include <iostream>
#include <vector>
#include <set>
using namespace std;
vector<vector<int>> con;
set<int> act; set<int> visited;
bool van=false;
void actual(int i, int p[], int l){
visited.insert(i);
set<int> now;
for(auto it=con[i].begin(); it!=con[i].end(); it++){
if(p[*it]!=-1){
int a=-l;
while(a!=l){
if(p[*it]+a>=0) now.insert(p[*it]+a);
a+=2;
}
}
if(!visited.count(*it)) actual(*it, p, l+1);
}
if(!van){
for(auto it=now.begin(); it!=now.end(); it++) act.insert(*it);
van=true;
}
//for(auto it=now.begin(); it!=now.end(); it++) cout << *it << '\n';
else for(auto it=act.begin(); it!=act.end(); it++) if(!now.count(*it)){act.erase(*it); it=act.begin(); if(act.size()==0) break;}
}
int solve(int i, int p[]){
//cout << '\n' << i << '\n';
visited.insert(i);
for(auto it=con[i].begin(); it!=con[i].end(); it++){
if(p[*it]!=-1){act.insert(p[*it]+1); act.insert(abs(p[*it]-1));}
if(act.size()>0) van=true;
actual(*it, p, 2);
}
if(act.size()==0) return -1;
int x=*(act.begin()); act.clear(); visited.clear();
return x;
}
int main(){
bool ok=true;
int n; cin >> n;
int p[n]; //f[n];
con.assign(n, vector<int>());
for(int i=0; i<n; i++){
int x; cin >> x;
if(x!=0){con[i].push_back(x-1); con[x-1].push_back(i);}
}
for(int i=0; i<n; i++) cin >> p[i];
for(int i=0; i<n; i++){
if(p[i]==-1) p[i]=solve(i, p);
if(p[i]==-1){ok=false; break;}
}
if(1){
cout << "IGEN\n";
for(int i=0; i<n; i++){
cout << p[i] << ' ';
}
}
else cout << "NEM";
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 3ms | 1816 KiB | ||||
2 | Hibás válasz | 3ms | 2060 KiB | ||||
3 | Időlimit túllépés | 600ms | 13536 KiB | ||||
subtask2 | 0/10 | ||||||
4 | Hibás válasz | 108ms | 18748 KiB | ||||
5 | Hibás válasz | 120ms | 20940 KiB | ||||
6 | Hibás válasz | 134ms | 22428 KiB | ||||
7 | Hibás válasz | 145ms | 24392 KiB | ||||
subtask3 | 0/15 | ||||||
8 | Futási hiba | 236ms | 130792 KiB | ||||
9 | Futási hiba | 237ms | 130548 KiB | ||||
10 | Futási hiba | 240ms | 130316 KiB | ||||
11 | Futási hiba | 230ms | 130152 KiB | ||||
12 | Futási hiba | 245ms | 129916 KiB | ||||
13 | Futási hiba | 232ms | 129872 KiB | ||||
14 | Hibás válasz | 143ms | 51704 KiB | ||||
subtask4 | 0/35 | ||||||
15 | Hibás válasz | 4ms | 4544 KiB | ||||
16 | Hibás válasz | 4ms | 4640 KiB | ||||
17 | Hibás válasz | 4ms | 4492 KiB | ||||
18 | Hibás válasz | 4ms | 4748 KiB | ||||
19 | Hibás válasz | 4ms | 4892 KiB | ||||
20 | Hibás válasz | 3ms | 4780 KiB | ||||
21 | Hibás válasz | 4ms | 4932 KiB | ||||
22 | Hibás válasz | 4ms | 5040 KiB | ||||
subtask5 | 0/40 | ||||||
23 | Hibás válasz | 134ms | 23968 KiB | ||||
24 | Időlimit túllépés | 552ms | 16404 KiB | ||||
25 | Hibás válasz | 317ms | 27692 KiB | ||||
26 | Hibás válasz | 144ms | 24444 KiB | ||||
27 | Hibás válasz | 381ms | 26108 KiB | ||||
28 | Időlimit túllépés | 555ms | 16296 KiB | ||||
29 | Hibás válasz | 126ms | 25532 KiB | ||||
30 | Hibás válasz | 142ms | 25380 KiB | ||||
31 | Időlimit túllépés | 577ms | 17904 KiB | ||||
32 | Időlimit túllépés | 518ms | 16776 KiB | ||||
33 | Időlimit túllépés | 569ms | 15564 KiB |