#include "stations.h"
#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define vll vector<ll>
#define pll pair<ll, ll>
#define pb push_back
typedef int ll;
namespace{
const ll dumb=1000;
ll timer;
}
void dfs(ll cur, ll par, vll &re, vll &sz, vector<vll> &adj){
sz[cur]=1;
re[cur]=timer;
timer++;
for(auto &chd:adj[cur]){
if(chd==par) continue;
dfs(chd, cur, re, sz, adj);
sz[cur]+=sz[chd];
}
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
vector<vll> adj(n);
vll re(n);
vll sz(n);
for(ll i=0;i<n-1;i++){
adj[u[i]].pb(v[i]);
adj[v[i]].pb(u[i]);
}
timer=0;
dfs(0, -1, re, sz, adj);
for(ll i=0;i<n;i++){
re[i]+=dumb*sz[i];
}
return re;
}
int find_next_station(int s, int t, vector<int> c) {
auto id=[&](ll tar){
return tar%dumb;
};
auto sz=[&](ll tar){
return tar/dumb;
};
ll p=-1;
for(auto &it:c){
if(id(it)<id(s)){
p=it;
break;
}
}
assert(p!=-1);
if(id(t)>=id(s) && id(t)<=id(s)+sz(s)-1){
for(auto &it:c){
if(it==p) continue;
if(id(t)>=id(it) && id(t)<=id(it)+sz(it)-1){
return it;
}
}
assert(false);
}
else{
return p;
}
}
# | 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... |