#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3+5;
vector<int> adj[MAXN];
int tin[MAXN], tout[MAXN], t;
vector<int> labels;
void dfs(int s, int p){
tin[s] = ++t;
for(int viz : adj[s])
if(viz != p)dfs(viz,s);
tout[s] = t;
labels[s] = (tout[s]<<9)+tin[s];
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
labels.resize(n);
for (int i = 0; i < n-1; i++) {
adj[u[i]].push_back(v[i]);
adj[v[i]].push_back(u[i]);
}
t = -1;
dfs(0,-1);
for(int i = 0; i < n; i++)adj[i].clear();
return labels;
}
int find_next_station(int s, int t, vector<int> c) {
int x = (1<<9)-1; x = (x<<9);
t -= (t&x);
int outmx = (c.back()&x)>>9;
int cur = 0;
while(cur < c.size()){
int viz = c[cur];
int in = viz-(viz&x), out = (viz&x)>>9;
if(out == outmx)break;
if(in <= t && t<= out)return viz;
cur++;
}
for(int j = c.size()-1; j >= cur; j--){
int viz = c[j];
int in = viz-(viz&x), out = (viz&x)>>9;
if(in <= t && t<= out)return viz;
}
return c[cur];
}
| # | 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... |