100282024-03-24 15:28:04111Széfnyitáscpp17Wrong answer 47/1008ms6848 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]];
				}
			}
			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';
			}
#ifdef DEBUG
			for(int z=1;z<=N;z++){
				int x=z,y=0;
				int k=0;
				for(int i=0;i<10000000;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){
#ifdef DEBUG
					cout<<z<<' '<<k<<'\n';
#endif
					return 1;
				}
			}
			goto start;
#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
1Accepted3ms1892 KiB
2Accepted3ms2088 KiB
subtask20/16
3Accepted3ms2432 KiB
4Accepted3ms2568 KiB
5Accepted3ms2792 KiB
6Accepted3ms3284 KiB
7Accepted3ms3304 KiB
8Accepted3ms3268 KiB
9Wrong answer3ms3360 KiB
10Wrong answer3ms3616 KiB
11Wrong answer3ms3696 KiB
12Accepted3ms3808 KiB
13Accepted3ms3780 KiB
subtask324/24
14Accepted3ms3916 KiB
15Accepted3ms3888 KiB
16Accepted3ms4176 KiB
17Accepted3ms4032 KiB
18Accepted3ms4044 KiB
19Accepted3ms4072 KiB
20Accepted3ms4324 KiB
21Accepted3ms4252 KiB
subtask423/23
22Accepted3ms4180 KiB
23Accepted3ms4312 KiB
24Accepted3ms4340 KiB
25Accepted3ms4384 KiB
26Accepted3ms4360 KiB
27Accepted3ms4336 KiB
28Accepted3ms4604 KiB
29Accepted3ms4540 KiB
subtask50/37
30Accepted3ms2432 KiB
31Accepted3ms2568 KiB
32Accepted3ms2792 KiB
33Accepted3ms3284 KiB
34Accepted3ms3304 KiB
35Accepted3ms3268 KiB
36Wrong answer3ms3360 KiB
37Wrong answer3ms3616 KiB
38Wrong answer3ms3696 KiB
39Accepted3ms3808 KiB
40Accepted3ms3780 KiB
41Accepted3ms3916 KiB
42Accepted3ms3888 KiB
43Accepted3ms4176 KiB
44Accepted3ms4032 KiB
45Accepted3ms4044 KiB
46Accepted3ms4072 KiB
47Accepted3ms4324 KiB
48Accepted3ms4252 KiB
49Accepted3ms4180 KiB
50Accepted3ms4312 KiB
51Accepted3ms4340 KiB
52Accepted3ms4384 KiB
53Accepted3ms4360 KiB
54Accepted3ms4336 KiB
55Accepted3ms4604 KiB
56Accepted3ms4540 KiB
57Accepted4ms4680 KiB
58Accepted7ms5696 KiB
59Accepted6ms5772 KiB
60Accepted7ms5828 KiB
61Accepted8ms6552 KiB
62Accepted8ms6660 KiB
63Accepted8ms5896 KiB
64Accepted8ms6604 KiB
65Accepted8ms6012 KiB
66Accepted8ms6120 KiB
67Accepted8ms6848 KiB
68Accepted8ms6084 KiB