100272024-03-24 15:26:25111Széfnyitáscpp17Hibás válasz 0/1008ms7696 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()<<'\n';
			for(int i=0;i<t.size();i++){
				cout<<r[i]<<' '<<t[i][0]+1<<' '<<t[i][1]+1<<'\n';
			}
			cout<<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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1896 KiB
2Hibás válasz3ms2088 KiB
subtask20/16
3Hibás válasz3ms2320 KiB
4Hibás válasz3ms2508 KiB
5Hibás válasz2ms2592 KiB
6Hibás válasz3ms2720 KiB
7Hibás válasz2ms2832 KiB
8Hibás válasz2ms2904 KiB
9Hibás válasz3ms3032 KiB
10Hibás válasz3ms3404 KiB
11Hibás válasz3ms3520 KiB
12Hibás válasz3ms3720 KiB
13Hibás válasz3ms3904 KiB
subtask30/24
14Hibás válasz3ms4016 KiB
15Hibás válasz3ms4296 KiB
16Hibás válasz3ms4252 KiB
17Hibás válasz3ms4500 KiB
18Hibás válasz3ms4788 KiB
19Hibás válasz3ms4868 KiB
20Hibás válasz3ms5164 KiB
21Hibás válasz3ms5104 KiB
subtask40/23
22Hibás válasz3ms4984 KiB
23Hibás válasz3ms5060 KiB
24Hibás válasz3ms5148 KiB
25Hibás válasz3ms5008 KiB
26Hibás válasz3ms4988 KiB
27Hibás válasz3ms5084 KiB
28Hibás válasz3ms5220 KiB
29Hibás válasz3ms5144 KiB
subtask50/37
30Hibás válasz3ms2320 KiB
31Hibás válasz3ms2508 KiB
32Hibás válasz2ms2592 KiB
33Hibás válasz3ms2720 KiB
34Hibás válasz2ms2832 KiB
35Hibás válasz2ms2904 KiB
36Hibás válasz3ms3032 KiB
37Hibás válasz3ms3404 KiB
38Hibás válasz3ms3520 KiB
39Hibás válasz3ms3720 KiB
40Hibás válasz3ms3904 KiB
41Hibás válasz3ms4016 KiB
42Hibás válasz3ms4296 KiB
43Hibás válasz3ms4252 KiB
44Hibás válasz3ms4500 KiB
45Hibás válasz3ms4788 KiB
46Hibás válasz3ms4868 KiB
47Hibás válasz3ms5164 KiB
48Hibás válasz3ms5104 KiB
49Hibás válasz3ms4984 KiB
50Hibás válasz3ms5060 KiB
51Hibás válasz3ms5148 KiB
52Hibás válasz3ms5008 KiB
53Hibás válasz3ms4988 KiB
54Hibás válasz3ms5084 KiB
55Hibás válasz3ms5220 KiB
56Hibás válasz3ms5144 KiB
57Hibás válasz4ms5616 KiB
58Hibás válasz7ms6652 KiB
59Hibás válasz6ms6448 KiB
60Hibás válasz7ms6644 KiB
61Hibás válasz8ms7256 KiB
62Hibás válasz8ms7504 KiB
63Hibás válasz8ms6936 KiB
64Hibás válasz8ms7592 KiB
65Hibás válasz7ms6732 KiB
66Hibás válasz8ms7212 KiB
67Hibás válasz8ms7696 KiB
68Hibás válasz8ms7048 KiB