Submission #308580

#TimeUsernameProblemLanguageResultExecution timeMemory
308580szekelymilanStations (IOI20_stations)C++14
0 / 100
1115 ms916 KiB
#include "stations.h"
#include <vector>

std::vector<std::vector<int>> G;
std::vector<bool> visited;
std::vector<int> labels;
int time = 0;

void DFS(int node = 0) {
	visited[node] = true;
	labels[node] += (time++) * 2000;

	for (int v : G[node])
		if (!visited[v])
			DFS(v);
	
	labels[node] += time++;
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	G.resize(n);
	visited.resize(n);
	labels.resize(n);

	for (int i = 0; i < n - 1; i++) {
		G[u[i]].push_back(v[i]);
		G[v[i]].push_back(u[i]);
	}

	DFS();

	return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
	for (int node : c)
		if (node / 2000 < t / 2000 && t / 2000 < node % 2000 && node / 2000 > s / 2000 && node % 2000 < s % 2000)
			return node;
	
	for (int node : c)
		if (node / 2000 < s / 2000 && node % 2000 > s % 2000)
			return node;
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...