#include "stations.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int dist[1001], par[1001], l;
vector<int> adj[1001], labels(1001);
void dfs(int u = 1){
	if (dist[u] % 2 == 0){
		labels[u] = l++;
	}
	for (auto i : adj[u]){
		if (i != par[u]){
			dist[i] = dist[u] + 1;
			par[i] = u;
			dfs(i);
		}
	}
	if (dist[u] % 2) labels[u] = l++; 
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	for (int i = 1; i <= n; i++) adj[i].clear();
	for (int i = 1; i <= n; i++) {dist[i] = 0, par[i] = 0;};
	for (int i = 0; i < n - 1; i++){
		adj[u[i] + 1].push_back(v[i] + 1);
		adj[v[i] + 1].push_back(u[i] + 1);		
	}
	l = 0;
	dfs();
	vector<int> ans;
	for (int i = 1; i <= n; i++){
		ans.push_back(labels[i]);
	}
	return ans;
}
int find_next_station(int s, int t, std::vector<int> c) {
	int n = c.size();
	if (s > c.back()){
		for (int i = 1; i < n - 1; i++){
			if (t >= c[i] and t < c[i + 1]) return c[i];
		}
		if (t >= c[n - 1] and t < s) return c[n - 1];
		else return c[0];
	}
	else {
		if (t >= s and t <= c[0]) return c[0];
		for (int i = 1; i < n - 1; i++){
			if (t > c[i - 1] and t <= c[i]) return c[i];
		}
		return c[n - 1];
	}
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |