100252024-03-24 15:11:14111Széfnyitáscpp17Wrong answer 0/10012ms7564 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);
			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;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;
				}
				vector<int>c(N);
				for(int i=0;i<N;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;
				}
				int yy=y;
				for(int i=0;i<N;i++){
					r[y]=c[i];
					y=t[y][c[i]]=t.size();
					t.emplace_back();
					r.push_back(-1);
				}
				r[y]=yy;
			}
			cout<<t.size()<<'\n';
			for(int i=0;i<t.size();i++){
				cout<<r[i]<<' '<<t[i][0]+1<<' '<<t[i][1]+1<<'\n';
			}
#ifdef DEBUG
			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
1Wrong answer3ms1824 KiB
2Wrong answer3ms2060 KiB
subtask20/16
3Wrong answer3ms2236 KiB
4Wrong answer3ms2468 KiB
5Wrong answer2ms2560 KiB
6Wrong answer3ms2904 KiB
7Wrong answer3ms2844 KiB
8Wrong answer3ms2912 KiB
9Wrong answer3ms3136 KiB
10Wrong answer3ms3352 KiB
11Wrong answer3ms3436 KiB
12Wrong answer3ms3480 KiB
13Wrong answer3ms3584 KiB
subtask30/24
14Wrong answer3ms3976 KiB
15Wrong answer3ms4236 KiB
16Wrong answer3ms4060 KiB
17Wrong answer3ms4216 KiB
18Wrong answer3ms4440 KiB
19Wrong answer3ms4396 KiB
20Wrong answer3ms4640 KiB
21Wrong answer3ms4632 KiB
subtask40/23
22Wrong answer3ms4768 KiB
23Wrong answer3ms4752 KiB
24Wrong answer3ms4756 KiB
25Wrong answer3ms4780 KiB
26Wrong answer3ms4648 KiB
27Wrong answer3ms4756 KiB
28Wrong answer3ms5016 KiB
29Wrong answer3ms4944 KiB
subtask50/37
30Wrong answer3ms2236 KiB
31Wrong answer3ms2468 KiB
32Wrong answer2ms2560 KiB
33Wrong answer3ms2904 KiB
34Wrong answer3ms2844 KiB
35Wrong answer3ms2912 KiB
36Wrong answer3ms3136 KiB
37Wrong answer3ms3352 KiB
38Wrong answer3ms3436 KiB
39Wrong answer3ms3480 KiB
40Wrong answer3ms3584 KiB
41Wrong answer3ms3976 KiB
42Wrong answer3ms4236 KiB
43Wrong answer3ms4060 KiB
44Wrong answer3ms4216 KiB
45Wrong answer3ms4440 KiB
46Wrong answer3ms4396 KiB
47Wrong answer3ms4640 KiB
48Wrong answer3ms4632 KiB
49Wrong answer3ms4768 KiB
50Wrong answer3ms4752 KiB
51Wrong answer3ms4756 KiB
52Wrong answer3ms4780 KiB
53Wrong answer3ms4648 KiB
54Wrong answer3ms4756 KiB
55Wrong answer3ms5016 KiB
56Wrong answer3ms4944 KiB
57Wrong answer4ms5372 KiB
58Wrong answer8ms6600 KiB
59Wrong answer8ms6164 KiB
60Wrong answer8ms6684 KiB
61Wrong answer12ms7420 KiB
62Wrong answer12ms7476 KiB
63Wrong answer12ms7336 KiB
64Wrong answer12ms7420 KiB
65Wrong answer7ms6420 KiB
66Wrong answer12ms7424 KiB
67Wrong answer12ms7564 KiB
68Wrong answer12ms7316 KiB