Submission #883469

#TimeUsernameProblemLanguageResultExecution timeMemory
883469dubabubaRail (IOI14_rail)C++14
0 / 100
3051 ms262144 KiB
#include "rail.h"
#include <bits/stdc++.h>

using namespace std;

const int mxn = 5050;
int dis[mxn][mxn];
int idx[mxn], lvl[mxn];
vector<int> adj[mxn];

void dfs(int u, int p = 0) {
	lvl[u] = lvl[p] ^ 1;
	for(int v : adj[u])
	if(v != p) {
		if(lvl[u] & 1) idx[v] = idx[u] - dis[u][v];
		else idx[v] = idx[u] + dis[u][v];
		dfs(v, u);
	}
}
void findLocation(int n, int st, int x[], int t[]) {
	for(int i = 0; i < n; i++)
	for(int j = i + 1; j < n; j++)
		dis[i][j] = dis[j][i] = getDistance(i, j);

	for(int i = 0; i < n; i++)
	for(int j = i + 1; j < n; j++)
	for(int k = 0; k < n; k++)
		if(dis[i][j] == dis[i][k] + dis[k][j]) {
			adj[i].push_back(j);
			adj[j].push_back(i);
		}

	lvl[0] = 1;
	dfs(0);
	for(int i = 0; i < n; i++) {
		t[i] = lvl[i] + 1;
		x[i] = idx[i];
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...