Submission #1246993

#TimeUsernameProblemLanguageResultExecution timeMemory
1246993PlayVoltzAirline Route Map (JOI18_airline)C++20
0 / 100
203 ms23216 KiB
#include "Alicelib.h"
#include <bits/stdc++.h>
using namespace std;

#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second

void Alice(int n, int m, int a[], int b[]){
	if (n==1||n==2){
		InitG(n, m);
		return;
	}
	vector<pii> res;
	for (int i=0; i<m; ++i)res.pb(mp(a[i], b[i]));
	for (int i=0; i<n; ++i)for (int j=0; j<10; ++j)if (i&(1<<j))res.pb(mp(i, n+j));
	for (int i=0; i<10; ++i)res.pb(mp(n+i, n+10));
	for (int i=0; i<n+10; ++i)res.pb(mp(i, n+11));
	for (int i=0; i<9; ++i)res.pb(mp(n+i, n+i+1));
	InitG(n+12, res.size());
	for (int i=0; i<res.size(); ++i)MakeG(i, res[i].fi, res[i].se);
}
#include "Boblib.h"
#include <bits/stdc++.h>
using namespace std;

#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second

void Bob(int n, int m, int c[], int d[]){
	if (n==1){
		InitMap(1, 0);
		return;
	}
	if (n==2){
		InitMap(1, 0);
		if (m==1)MakeMap(1, 0);
		return;
	}
	vector<int> deg(n, 0);
	for (int i=0; i<m; ++i)++deg[c[i]], ++deg[d[i]];
	int fat, mx=-1, par, node=-1, d1=0, d2=0;
	vector<vector<bool> > graph(n, vector<bool>(n, 0));
	for (int i=0; i<n; ++i)if (deg[i]>mx)mx=deg[i], fat=i;
	for (int i=0; i<m; ++i)graph[c[i]][d[i]]=graph[d[i]][c[i]]=1;
	for (int i=0; i<n; ++i)if (!graph[i][fat]&&i!=fat)par=i;
	for (int i=0; i<n; ++i)if (graph[par][i]){
		int count=0;
		for (int j=0; j<n; ++j)if (graph[par][j]&&graph[i][j])++count;
		if (count==1)node=i;
	}
	vector<bool> visited(n, 0);
	vector<int> vect;
	bool loop=1;
	while (loop){
		vect.pb(node);
		visited[node]=1;
		loop=0;
		for (int i=0; i<n; ++i)if (graph[i][node]&&!visited[i]&&graph[par][i]){
			node=i, loop=1;
			break;
		}
	}
	for (int i=0; i<n; ++i)d1+=graph[vect[0]][i], d2+=graph[vect[9]][i];
	if (d1<d2)reverse(vect.begin(), vect.end());
	vector<pii> ans;
	for (int i=0; i<m; ++i)if (!graph[par][c[i]]&&!graph[par][d[i]]&&c[i]!=fat&&d[i]!=fat&&c[i]!=par&&d[i]!=par){
		int a=0, b=0;
		for (int j=0; j<10; ++j)if (graph[c[i]][vect[j]])a+=(1<<j);
		for (int j=0; j<10; ++j)if (graph[d[i]][vect[j]])b+=(1<<j);
		ans.pb(mp(a, b));
	}
	InitMap(n-12, ans.size());
	for (auto a:ans)MakeMap(a.fi, a.se);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...