100312024-03-24 15:44:07111Széfnyitáscpp17Elfogadva 100/10085ms7152 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()%149;
	N=2;
#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-1);
		for(int i=0;i<N-1;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-1),c(N*2);
			int x=z;
			for(int i=0;i<N-1;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-1);
				int x=z;
				int y=0;
				for(int i=0;i<N-1;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]];
				}
				if(r[y]==-1){
					return 1;
				}
			}
			if(r.size()!=t.size()||count(r.begin(),r.end(),0)+count(r.begin(),r.end(),1)!=r.size()){
				return 1;
			}
			if(t.size()>50000){
				return 1;
			}
			for(int z=1;z<=N;z++){
				int x=z,y=0;
				int k=0;
				for(int i=0;i<100000;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){ /* HAS TO BE LESS!!! */
					cout<<z<<' '<<k<<'\n';
					return 1;
				}
			}
#ifdef DEBUG
			cout<<"OK"<<endl;
			goto start;
#else
			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';
			}
#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
1Elfogadva4ms1892 KiB
2Elfogadva4ms2376 KiB
subtask216/16
3Elfogadva4ms2544 KiB
4Elfogadva4ms2452 KiB
5Elfogadva4ms2564 KiB
6Elfogadva4ms2604 KiB
7Elfogadva4ms2740 KiB
8Elfogadva4ms2888 KiB
9Elfogadva4ms3100 KiB
10Elfogadva4ms3268 KiB
11Elfogadva4ms3232 KiB
12Elfogadva4ms3480 KiB
13Elfogadva4ms3356 KiB
subtask324/24
14Elfogadva17ms3496 KiB
15Elfogadva17ms3644 KiB
16Elfogadva17ms3604 KiB
17Elfogadva17ms4140 KiB
18Elfogadva17ms4080 KiB
19Elfogadva17ms3844 KiB
20Elfogadva17ms3884 KiB
21Elfogadva17ms3900 KiB
subtask423/23
22Elfogadva17ms4036 KiB
23Elfogadva17ms4052 KiB
24Elfogadva17ms4148 KiB
25Elfogadva17ms4148 KiB
26Elfogadva17ms4128 KiB
27Elfogadva17ms4304 KiB
28Elfogadva17ms4220 KiB
29Elfogadva17ms4164 KiB
subtask537/37
30Elfogadva4ms2544 KiB
31Elfogadva4ms2452 KiB
32Elfogadva4ms2564 KiB
33Elfogadva4ms2604 KiB
34Elfogadva4ms2740 KiB
35Elfogadva4ms2888 KiB
36Elfogadva4ms3100 KiB
37Elfogadva4ms3268 KiB
38Elfogadva4ms3232 KiB
39Elfogadva4ms3480 KiB
40Elfogadva4ms3356 KiB
41Elfogadva17ms3496 KiB
42Elfogadva17ms3644 KiB
43Elfogadva17ms3604 KiB
44Elfogadva17ms4140 KiB
45Elfogadva17ms4080 KiB
46Elfogadva17ms3844 KiB
47Elfogadva17ms3884 KiB
48Elfogadva17ms3900 KiB
49Elfogadva17ms4036 KiB
50Elfogadva17ms4052 KiB
51Elfogadva17ms4148 KiB
52Elfogadva17ms4148 KiB
53Elfogadva17ms4128 KiB
54Elfogadva17ms4304 KiB
55Elfogadva17ms4220 KiB
56Elfogadva17ms4164 KiB
57Elfogadva68ms4692 KiB
58Elfogadva82ms5664 KiB
59Elfogadva82ms5788 KiB
60Elfogadva82ms5924 KiB
61Elfogadva85ms6588 KiB
62Elfogadva83ms6800 KiB
63Elfogadva82ms6120 KiB
64Elfogadva83ms6808 KiB
65Elfogadva82ms6032 KiB
66Elfogadva83ms6524 KiB
67Elfogadva85ms7152 KiB
68Elfogadva83ms6508 KiB