101802024-03-29 10:39:00111Különböző katicákcpp17Wrong answer 0/10064ms52456 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
	cin>>N;
	vector<vector<int>>g(N+1);
	vector<int>p(N+1);
	for(int i=1;i<=N;i++){
		cin>>p[i];
		if(i==1){
			continue;
		}
		g[p[i]].push_back(i);
		g[i].push_back(p[i]);
	}
	vector<int>v(N+1);
	for(int i=1;i<=N;i++){
		cin>>v[i];
	}
	vector<pair<int,int>>w(N+1);
	auto dfs=[&](auto self,int i)->pair<int,int>{
		pair<int,int>a={v[i],v[i]};
		for(int j:g[i]){
			pair<int,int>b=j==p[i]?v[j]==-1?pair<int,int>{-1,-1}:pair<int,int>{abs(v[j]-1),v[j]+1}:self(self,j);
			if(b.first==-1&&b.second==-1){
				continue;
			}
			if(a.first==-1&&a.second==-1){
				a=b;
				continue;
			}
			if(a.first%2!=b.first%2||b.first>a.second||b.second<a.first){
				cout<<"NEM"<<'\n';
				exit(0);
			}
			a.first=max(a.first,b.first);
			a.second=min(a.second,b.second);
		}
		w[i]=a;
		if(a.first!=-1&&a.second!=-1){
			a.first=a.first==0?a.first+1:a.first-1;
			a.second++;
		}
		return a;
	};
	dfs(dfs,1);
	auto dfs2=[&](auto self,int i)->void{
		for(int j:g[i]){
			if(j==p[i]){
				continue;
			}
			if(v[j]==-1){
				v[j]=v[i]+1;
			}
			else{
				if(w[j].first<=v[i]+1&&v[i]+1<=w[j].second){
					v[j]=v[i]+1;
				}
				else{
					v[j]=v[i]-1;
				}
			}
			self(self,j);
		}
	};
	dfs2(dfs2,1);
	for(int i=1;i<=N;i++){
		for(int j:g[i])if(abs(v[i]-v[j])!=1){
			cout<<i<<" "<<v[i]<<endl;
			cout<<j<<" "<<v[j]<<endl;
			exit(1);
		}
	}
	cout<<"IGEN"<<'\n';
	for(int i=1;i<=N;i++){
		cout<<v[i]<<' ';
	}
	cout<<'\n';
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1824 KiB
2Accepted3ms2060 KiB
3Wrong answer48ms19208 KiB
subtask20/10
4Wrong answer39ms18012 KiB
5Wrong answer45ms20352 KiB
6Wrong answer50ms22504 KiB
7Wrong answer52ms24936 KiB
subtask30/15
8Accepted48ms48024 KiB
9Accepted45ms48480 KiB
10Wrong answer64ms50780 KiB
11Wrong answer57ms50848 KiB
12Wrong answer54ms50644 KiB
13Wrong answer57ms52456 KiB
14Wrong answer52ms51872 KiB
subtask40/35
15Wrong answer3ms13832 KiB
16Accepted3ms13840 KiB
17Accepted3ms13860 KiB
18Wrong answer3ms14000 KiB
19Wrong answer3ms14232 KiB
20Wrong answer3ms14360 KiB
21Wrong answer3ms14236 KiB
22Wrong answer3ms14248 KiB
subtask50/40
23Wrong answer48ms31616 KiB
24Accepted39ms33308 KiB
25Accepted37ms34848 KiB
26Wrong answer52ms34148 KiB
27Wrong answer48ms35120 KiB
28Wrong answer54ms36972 KiB
29Wrong answer50ms37920 KiB
30Wrong answer52ms38460 KiB
31Wrong answer50ms39212 KiB
32Wrong answer54ms40128 KiB
33Wrong answer57ms42104 KiB