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