100292024-03-24 15:33:12111Széfnyitáscpp17Wrong answer 47/10085ms7440 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
#ifdef DEBUG
start:
	N=2+rand()%99;
	// N=4;
#else
	cin>>N;
#endif
	int a[N+1],g[N+1][2];
	for(int i=1;i<=N;i++){
#ifdef DEBUG
		a[i]=rand()&1,g[i][0]=1+rand()%N,g[i][1]=1+rand()%N;
#else
		cin>>a[i]>>g[i][0]>>g[i][1];
#endif
	}
	int K;
#ifdef DEBUG
	K=N;
#else
	cin>>K;
#endif
	for(int _=0;_<1000;_++){
		vector<int>b(N);
		for(int i=0;i<N;i++){
			b[i]=rand()&1;
		}
		map<vector<int>,vector<int>>m;
		int ok=1;
		for(int z=1;z<=N;z++){
			vector<int>v(N),c(N*2);
			int x=z;
			for(int i=0;i<N;i++){
				v[i]=a[x];
				x=g[x][b[i]];
			}
			for(int i=0;i<N*2;i++){
				c[i]=a[x];
				x=g[x][a[x]];
			}
			if(m.count(v)&&m[v]!=c&&count(c.begin(),c.end(),0)&&count(c.begin(),c.end(),1)){
				// for(int i:v)cout<<i<<' ';cout<<endl;
				// for(int i:c)cout<<i<<' ';cout<<endl;
				// for(int i:m[v])cout<<i<<' ';cout<<endl;
				ok=0;
				break;
			}
			m[v]=c;
		}
		if(ok){
			vector<array<int,2>>t(1);
			vector<int>r(1);
			for(int z=1;z<=N;z++){
				vector<int>v(N);
				int x=z;
				int y=0;
				for(int i=0;i<N;i++){
					v[i]=a[x];
					if(t[y][a[x]]==0){
						t[y][a[x]]=t.size();
						t.emplace_back();
						r.push_back(-1);
					}
					r[y]=b[i];
					y=t[y][a[x]];
					x=g[x][b[i]];
				}
				if(r[y]!=-1){
					continue;
				}
				int xx=x;
				vector<int>c(N*2);
				for(int i=0;i<N*2;i++){
					c[i]=a[x];
					x=g[x][a[x]];
				}
				if(!count(c.begin(),c.end(),0)){
					r[y]=1;
					t[y][1]=y;
					continue;
				}
				if(!count(c.begin(),c.end(),1)){
					r[y]=0;
					t[y][0]=y;
					continue;
				}
				x=xx;
				vector<int>w(N+1);
				for(int i=0;i<N*2;i++){
					r[y]=a[x];
					if(w[g[x][a[x]]]){
						t[y][a[x]]=w[g[x][a[x]]];
						break;
					}
					w[x]=y;
					t[y][a[x]]=t.size();
					t.emplace_back();
					r.push_back(-1);
					y=t[y][a[x]];
					x=g[x][a[x]];
				}
				if(r[y]==-1){
					return 1;
				}
			}
			if(count(r.begin(),r.end(),-1)){
				return 1;
			}
			if(t.size()>50000){
				return 1;
			}
			for(int z=1;z<=N;z++){
				int x=z,y=0;
				int k=0;
				for(int i=0;i<100000;i++){
					k+=r[y]!=a[x];
					int xx=g[x][r[y]];
					int yy=t[y][a[x]];
					x=xx;
					y=yy;
				}
				if(k>K){
					cout<<z<<' '<<k<<'\n';
					return 1;
				}
			}
#ifdef DEBUG
			cout<<"OK"<<endl;
			goto start;
#else
			cout<<t.size()<<' '<<1<<'\n';
			for(int i=0;i<t.size();i++){
				cout<<r[i]<<' '<<t[i][0]+1<<' '<<t[i][1]+1<<'\n';
			}
#endif
			return 0;
		}
	}
#ifdef DEBUG
	cout<<N<<endl;
	for(int i=1;i<=N;i++){
		cout<<a[i]<<' '<<g[i][0]<<' '<<g[i][1]<<endl;
	}
#endif
	return 1;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted4ms1764 KiB
2Accepted4ms1924 KiB
subtask20/16
3Accepted4ms2140 KiB
4Accepted4ms2368 KiB
5Accepted4ms2572 KiB
6Accepted4ms2680 KiB
7Accepted4ms2884 KiB
8Accepted4ms2988 KiB
9Wrong answer4ms3212 KiB
10Wrong answer4ms3260 KiB
11Wrong answer4ms3268 KiB
12Accepted4ms3388 KiB
13Accepted4ms3624 KiB
subtask324/24
14Accepted17ms3732 KiB
15Accepted17ms3764 KiB
16Accepted17ms4000 KiB
17Accepted17ms3972 KiB
18Accepted17ms4232 KiB
19Accepted17ms4332 KiB
20Accepted17ms4540 KiB
21Accepted17ms4380 KiB
subtask423/23
22Accepted17ms4348 KiB
23Accepted17ms4352 KiB
24Accepted17ms4712 KiB
25Accepted17ms4588 KiB
26Accepted17ms4568 KiB
27Accepted17ms4592 KiB
28Accepted17ms4592 KiB
29Accepted17ms4644 KiB
subtask50/37
30Accepted4ms2140 KiB
31Accepted4ms2368 KiB
32Accepted4ms2572 KiB
33Accepted4ms2680 KiB
34Accepted4ms2884 KiB
35Accepted4ms2988 KiB
36Wrong answer4ms3212 KiB
37Wrong answer4ms3260 KiB
38Wrong answer4ms3268 KiB
39Accepted4ms3388 KiB
40Accepted4ms3624 KiB
41Accepted17ms3732 KiB
42Accepted17ms3764 KiB
43Accepted17ms4000 KiB
44Accepted17ms3972 KiB
45Accepted17ms4232 KiB
46Accepted17ms4332 KiB
47Accepted17ms4540 KiB
48Accepted17ms4380 KiB
49Accepted17ms4348 KiB
50Accepted17ms4352 KiB
51Accepted17ms4712 KiB
52Accepted17ms4588 KiB
53Accepted17ms4568 KiB
54Accepted17ms4592 KiB
55Accepted17ms4592 KiB
56Accepted17ms4644 KiB
57Accepted68ms4872 KiB
58Accepted82ms5884 KiB
59Accepted82ms5748 KiB
60Accepted82ms5920 KiB
61Accepted85ms6536 KiB
62Accepted85ms7168 KiB
63Accepted82ms6316 KiB
64Accepted85ms7128 KiB
65Accepted82ms6420 KiB
66Accepted83ms6836 KiB
67Accepted85ms7440 KiB
68Accepted83ms6796 KiB