#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
// #define int long long
#define all(x) x.begin(), x.end()
#define pb push_back
#define ar array
#define nl '\n'
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]].pb(v[i]);
adj[v[i]].pb(u[i]);
}
vector<int> tin(n), tout(n);
int timer = -1;
auto dfs = [&](auto &&self, int v, int p) -> void {
tin[v] = ++timer;
for(auto to : adj[v]) {
if(to == p) continue;
self(self, to, v);
}
tout[v] = timer;
};
dfs(dfs, 0, 0);
vector<int> lbl(n);
for(int i = 0; i < n; i++) {
// assert(tin[i] >= 0 && tin[i] < 1000);
// assert(tout[i] >= 0 && tout[i] < 1000);
lbl[i] = tin[i] * 1000 + tout[i];
// cout << i << ": " << tin[i] << ' ' << tout[i] << ' ' << lbl[i] << nl;
// assert(lbl[i] >= 0 && lbl[i] < 1000000);
}
return lbl;
}
int find_next_station(int s, int t, std::vector<int> c) {
auto check = [&](int u, int v) {
int tinu = u / 1000;
int toutu = u % 1000;
int tinv = v / 1000;
int toutv = v % 1000;
return tinv >= tinu && toutv <= toutu;
};
if(!check(s, t)) {
for(auto &u : c) {
if(!check(s, u)) return u;
}
} else {
for(auto &u : c) {
if(check(u, t)) return u;
}
}
// return 1;
assert(false);
}
| # | 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... |