#include <bits/stdc++.h>
#include "stations.h"
using namespace std;
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
std::vector<int> labels(n);
vector<vector<int>> g(n);
for(int i = 0;i < n - 1;i ++){
g[u[i]].emplace_back(v[i]);
g[v[i]].emplace_back(u[i]);
}
int timer = 0;
vector<int> in(n) , out(n);
function<void(int , int)> dfs = [&](int u , int p){
in[u] = ++timer;
for(int v : g[u]){
if(v != p){
dfs(v , u);
}
}
out[u] = timer;
};
dfs(0 , 0);
for(int i = 0;i < n;i ++){
labels[i] = 1000 * in[i] + out[i];
}
return labels;
}
int find_next_station(int s, int t, std::vector<int> c) {
auto f = [&](int l){
return pair<int , int>{l / 1000 , l % 1000};
};
auto [L , R] = f(t);
int bst = -1 , len = 1E9 , B , B_len = -1;
for(int x : c){
auto [l , r] = f(x);
if(l <= L && R <= r && len > r - l){
bst = x;
len = r - l;
}
if(r - l > B_len){
B = x;
B_len = r - l;
}
}
if(bst != -1){
return bst;
}
return B;
}
# | 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... |