#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... |