100252024-03-24 15:11:14111Széfnyitáscpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1824 KiB
2Hibás válasz3ms2060 KiB
subtask20/16
3Hibás válasz3ms2236 KiB
4Hibás válasz3ms2468 KiB
5Hibás válasz2ms2560 KiB
6Hibás válasz3ms2904 KiB
7Hibás válasz3ms2844 KiB
8Hibás válasz3ms2912 KiB
9Hibás válasz3ms3136 KiB
10Hibás válasz3ms3352 KiB
11Hibás válasz3ms3436 KiB
12Hibás válasz3ms3480 KiB
13Hibás válasz3ms3584 KiB
subtask30/24
14Hibás válasz3ms3976 KiB
15Hibás válasz3ms4236 KiB
16Hibás válasz3ms4060 KiB
17Hibás válasz3ms4216 KiB
18Hibás válasz3ms4440 KiB
19Hibás válasz3ms4396 KiB
20Hibás válasz3ms4640 KiB
21Hibás válasz3ms4632 KiB
subtask40/23
22Hibás válasz3ms4768 KiB
23Hibás válasz3ms4752 KiB
24Hibás válasz3ms4756 KiB
25Hibás válasz3ms4780 KiB
26Hibás válasz3ms4648 KiB
27Hibás válasz3ms4756 KiB
28Hibás válasz3ms5016 KiB
29Hibás válasz3ms4944 KiB
subtask50/37
30Hibás válasz3ms2236 KiB
31Hibás válasz3ms2468 KiB
32Hibás válasz2ms2560 KiB
33Hibás válasz3ms2904 KiB
34Hibás válasz3ms2844 KiB
35Hibás válasz3ms2912 KiB
36Hibás válasz3ms3136 KiB
37Hibás válasz3ms3352 KiB
38Hibás válasz3ms3436 KiB
39Hibás válasz3ms3480 KiB
40Hibás válasz3ms3584 KiB
41Hibás válasz3ms3976 KiB
42Hibás válasz3ms4236 KiB
43Hibás válasz3ms4060 KiB
44Hibás válasz3ms4216 KiB
45Hibás válasz3ms4440 KiB
46Hibás válasz3ms4396 KiB
47Hibás válasz3ms4640 KiB
48Hibás válasz3ms4632 KiB
49Hibás válasz3ms4768 KiB
50Hibás válasz3ms4752 KiB
51Hibás válasz3ms4756 KiB
52Hibás válasz3ms4780 KiB
53Hibás válasz3ms4648 KiB
54Hibás válasz3ms4756 KiB
55Hibás válasz3ms5016 KiB
56Hibás válasz3ms4944 KiB
57Hibás válasz4ms5372 KiB
58Hibás válasz8ms6600 KiB
59Hibás válasz8ms6164 KiB
60Hibás válasz8ms6684 KiB
61Hibás válasz12ms7420 KiB
62Hibás válasz12ms7476 KiB
63Hibás válasz12ms7336 KiB
64Hibás válasz12ms7420 KiB
65Hibás válasz7ms6420 KiB
66Hibás válasz12ms7424 KiB
67Hibás válasz12ms7564 KiB
68Hibás válasz12ms7316 KiB