100262024-03-24 15:18:38111Széfnyitáscpp17Hibás válasz 0/10012ms7040 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

#undef DEBUG

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;
				}
				int xx=x;
				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;
				}
				x=xx;
				for(int i=0;i<N;i++){
					r[y]=a[x];
					if(g[x][a[x]]==xx){
						break;
					}
					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()<<'\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álasz3ms2100 KiB
2Hibás válasz3ms2208 KiB
subtask20/16
3Hibás válasz3ms2236 KiB
4Hibás válasz3ms2588 KiB
5Hibás válasz3ms2648 KiB
6Hibás válasz3ms2696 KiB
7Hibás válasz3ms2824 KiB
8Hibás válasz3ms2900 KiB
9Hibás válasz3ms2968 KiB
10Hibás válasz2ms2964 KiB
11Hibás válasz2ms2964 KiB
12Hibás válasz3ms3128 KiB
13Hibás válasz3ms3188 KiB
subtask30/24
14Hibás válasz3ms3216 KiB
15Hibás válasz3ms3364 KiB
16Hibás válasz3ms3460 KiB
17Hibás válasz3ms3452 KiB
18Hibás válasz3ms3612 KiB
19Hibás válasz3ms3544 KiB
20Hibás válasz3ms3676 KiB
21Hibás válasz3ms3688 KiB
subtask40/23
22Hibás válasz3ms3660 KiB
23Hibás válasz3ms3668 KiB
24Hibás válasz3ms3944 KiB
25Hibás válasz3ms4252 KiB
26Hibás válasz3ms4192 KiB
27Hibás válasz3ms4120 KiB
28Hibás válasz3ms4192 KiB
29Hibás válasz3ms4388 KiB
subtask50/37
30Hibás válasz3ms2236 KiB
31Hibás válasz3ms2588 KiB
32Hibás válasz3ms2648 KiB
33Hibás válasz3ms2696 KiB
34Hibás válasz3ms2824 KiB
35Hibás válasz3ms2900 KiB
36Hibás válasz3ms2968 KiB
37Hibás válasz2ms2964 KiB
38Hibás válasz2ms2964 KiB
39Hibás válasz3ms3128 KiB
40Hibás válasz3ms3188 KiB
41Hibás válasz3ms3216 KiB
42Hibás válasz3ms3364 KiB
43Hibás válasz3ms3460 KiB
44Hibás válasz3ms3452 KiB
45Hibás válasz3ms3612 KiB
46Hibás válasz3ms3544 KiB
47Hibás válasz3ms3676 KiB
48Hibás válasz3ms3688 KiB
49Hibás válasz3ms3660 KiB
50Hibás válasz3ms3668 KiB
51Hibás válasz3ms3944 KiB
52Hibás válasz3ms4252 KiB
53Hibás válasz3ms4192 KiB
54Hibás válasz3ms4120 KiB
55Hibás válasz3ms4192 KiB
56Hibás válasz3ms4388 KiB
57Hibás válasz4ms4584 KiB
58Hibás válasz7ms5740 KiB
59Hibás válasz6ms5480 KiB
60Hibás válasz8ms6220 KiB
61Hibás válasz10ms6672 KiB
62Hibás válasz10ms6676 KiB
63Hibás válasz8ms6444 KiB
64Hibás válasz12ms7028 KiB
65Hibás válasz7ms6028 KiB
66Hibás válasz12ms7040 KiB
67Hibás válasz12ms7032 KiB
68Hibás válasz10ms6728 KiB