Submission #1344006

#TimeUsernameProblemLanguageResultExecution timeMemory
1344006wangzhiyi33Airline Route Map (JOI18_airline)C++20
100 / 100
173 ms26416 KiB
#include "Alicelib.h"
#include <bits/stdc++.h>
using namespace std;

void Alice( int N, int M, int A[], int B[] ){
	vector<pair<int,int>>edge;
	for(int q=0;q<M;q++){
		edge.push_back({A[q],B[q]});
	}
	for(int q=0;q<10;q++){
		for(int w=0;w<N;w++){
			if((w>>q)&1){
				edge.push_back({N+q,w});
			}
		}
		if(q<9)edge.push_back({N+q,N+q+1});
	}
	for(int q=0;q<N;q++)edge.push_back({q,N+10});
	edge.push_back({N+10,N+11});
	
	InitG(N+12,edge.size());
	int cnt=0;
	for(auto [a,b] : edge){
		MakeG(cnt,a,b); cnt++;
	}

	// InitG( 3, 2 );
	// MakeG( 1, 2 );
	// MakeG( 1, 3 );
}

#include "Boblib.h"
#include <bits/stdc++.h>
using namespace std;

void Bob( int V, int U, int C[], int D[] ){
	vector<int>adj[V+1];
	bool ada[V+1][V+1]; memset(ada,false,sizeof ada);
	int conv[V+1]; memset(conv,0,sizeof conv);

	for(int q=0;q<U;q++){
		adj[C[q]].push_back(D[q]);
		adj[D[q]].push_back(C[q]);
		ada[C[q]][D[q]]=ada[D[q]][C[q]]=true; 
		//cout<<C[q]<<" k "<<D[q]<<endl;
	}

	vector<pair<int,int>>edge;
	// cari N+10
	int nd=-1;
	for(int q=0;q<V;q++){
		if(adj[q].size()==1 && adj[adj[q][0]].size()==V-11){
			nd=adj[q][0]; break;
		}
	}

	// cari N+9
	int idx=-1;
	for(int q=0;q<V;q++){
		if(q!=nd && !ada[q][nd]){
			if(idx==-1 || adj[idx].size()>adj[q].size())idx=q;
		}
	}

	bool vis[V+1]; memset(vis,false,sizeof vis);
	for(int bit=9;bit>=0;bit--){
		vis[idx]=true;
		int nxt=-1;
		for(auto x : adj[idx]){
			if(ada[x][nd]){
				conv[x]+=(1<<bit);
			}
			if(!vis[x] && !ada[x][nd] && x!=nd){
				nxt=x;
			}
		}
		idx=nxt;
	}

	for(int q=0;q<U;q++){
		if(ada[C[q]][nd] && ada[D[q]][nd]){
			edge.push_back({conv[C[q]],conv[D[q]]});
		}
	}
	//cout<<edge.size()<<endl;
	InitMap(V-12,edge.size());

	for(auto [a,b] :edge)MakeMap(a,b);

	// InitMap( 3, 2 );
	// MakeMap( 1, 2 );
	// MakeMap( 1, 3 );
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...