101822024-03-29 10:45:55111Különböző katicákcpp17Futási hiba 0/10067ms45608 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];
	}
	auto vv=v;
	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);
	v[1]=w[1].first;
	auto dfs2=[&](auto self,int i)->void{
		for(int j:g[i]){
			if(j==p[i]){
				continue;
			}
			if(w[j].first==-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++){
		if(v[i]<0)exit(1);
		if(v[i]!=vv[i]&&vv[i]!=-1)exit(1);
		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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1704 KiB
2Elfogadva3ms1924 KiB
3Elfogadva48ms19464 KiB
subtask20/10
4Futási hiba32ms17632 KiB
5Futási hiba35ms19300 KiB
6Futási hiba39ms20896 KiB
7Futási hiba41ms22572 KiB
subtask30/15
8Elfogadva48ms44396 KiB
9Elfogadva46ms44104 KiB
10Elfogadva67ms45608 KiB
11Elfogadva57ms44672 KiB
12Elfogadva59ms43760 KiB
13Elfogadva59ms44816 KiB
14Futási hiba48ms43052 KiB
subtask40/35
15Futási hiba3ms3696 KiB
16Elfogadva3ms3900 KiB
17Elfogadva3ms3936 KiB
18Elfogadva3ms4020 KiB
19Elfogadva3ms4276 KiB
20Elfogadva3ms4168 KiB
21Elfogadva3ms4420 KiB
22Elfogadva3ms4564 KiB
subtask50/40
23Futási hiba39ms22772 KiB
24Elfogadva39ms23792 KiB
25Elfogadva37ms24260 KiB
26Elfogadva52ms22820 KiB
27Elfogadva50ms22708 KiB
28Elfogadva57ms23964 KiB
29Elfogadva54ms24280 KiB
30Elfogadva52ms23732 KiB
31Elfogadva54ms23320 KiB
32Elfogadva52ms23748 KiB
33Elfogadva57ms24760 KiB