5369 2023. 04. 26 19:05:32 kohumark Különböző katicák cpp17 Wrong answer 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";
}
Subtask Sum Test Verdict Time Memory
subtask1 0/0
1 Accepted 3ms 1816 KiB
2 Wrong answer 3ms 2060 KiB
3 Time limit exceeded 600ms 13536 KiB
subtask2 0/10
4 Wrong answer 108ms 18748 KiB
5 Wrong answer 120ms 20940 KiB
6 Wrong answer 134ms 22428 KiB
7 Wrong answer 145ms 24392 KiB
subtask3 0/15
8 Runtime error 236ms 130792 KiB
9 Runtime error 237ms 130548 KiB
10 Runtime error 240ms 130316 KiB
11 Runtime error 230ms 130152 KiB
12 Runtime error 245ms 129916 KiB
13 Runtime error 232ms 129872 KiB
14 Wrong answer 143ms 51704 KiB
subtask4 0/35
15 Wrong answer 4ms 4544 KiB
16 Wrong answer 4ms 4640 KiB
17 Wrong answer 4ms 4492 KiB
18 Wrong answer 4ms 4748 KiB
19 Wrong answer 4ms 4892 KiB
20 Wrong answer 3ms 4780 KiB
21 Wrong answer 4ms 4932 KiB
22 Wrong answer 4ms 5040 KiB
subtask5 0/40
23 Wrong answer 134ms 23968 KiB
24 Time limit exceeded 552ms 16404 KiB
25 Wrong answer 317ms 27692 KiB
26 Wrong answer 144ms 24444 KiB
27 Wrong answer 381ms 26108 KiB
28 Time limit exceeded 555ms 16296 KiB
29 Wrong answer 126ms 25532 KiB
30 Wrong answer 142ms 25380 KiB
31 Time limit exceeded 577ms 17904 KiB
32 Time limit exceeded 518ms 16776 KiB
33 Time limit exceeded 569ms 15564 KiB