Submission #809037

#TimeUsernameProblemLanguageResultExecution timeMemory
809037adrilenStations (IOI20_stations)C++17
5 / 100
809 ms712 KiB
#include "stations.h"
//#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using arr = array<int, 2>;
using arrr = array<int, 3>;

constexpr int maxn = 1e3;


vector <int> output;

int t;
void dfs(const vector<vector<int>> &adj, int p, int par)
{
	output[p] = t++;
	for (int i : adj[p])
	{
		if (i == par) continue;
		dfs(adj, i, p);
	}
}


std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	vector<vector<int>> adj(n);

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

	int start = -1;
	t = 0;
	for (int i = 0; i < n; i++) {
		if (adj[i].size() == 1ull) {
			start = i;
			break;
		}
	}

	output.assign(n, 0);
	dfs(adj, start, -1);
	return output;
}

int find_next_station(int s, int T, std::vector<int> c) {

	if (c.size() == 1ull) return c.front();

	if (T < c.front()) return c.front();


	auto it = upper_bound(c.begin(), c.end(), T) - 1;


	return *it;
}
#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...