#include <bits/stdc++.h>
#include "stations.h"
using namespace std;
vector<int> w, a;
vector<vector<int>> g;
void dfs(int u, int p) {
w[u] = 1;
a.push_back(u);
for (auto v : g[u]) {
if (v != p) {
dfs(v, u);
w[u] += w[v];
}
}
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
a.clear();
g.assign(n, {});
w.assign(n, 0);
for (int i = 0; i < n - 1; i++) {
g[u[i]].push_back(v[i]);
g[v[i]].push_back(u[i]);
}
dfs(0, -1);
vector<int> ret(n);
for (int i = 0; i < n; i++) {
ret[a[i]] = i * 1000 + w[a[i]];
}
return ret;
}
bool is(int x, int y) {
int u = x / 1000, w_u = x % 1000;
int v = y / 1000, v_u = y % 1000;
if (v < u || v_u > w_u) return false;
return u + w_u - 1 >= v;
}
int find_next_station(int s, int t, vector<int> c) {
if (is(s, t)) {
for (auto x : c) {
if (x == c[0]) continue;
if (is(x, t) || x == t) {
return x;
}
}
}
return c[0];
}
| # | 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... |