#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ll long long
#define ld long double
const int N=1e5+50;
vector<int>E[N];
int in[N],out[N],nc=-1;
void DFS(int u,int parent=-1){
in[u]=++nc;
for(auto i:E[u]){
if(i!=parent) DFS(i,u);
}
out[u]=nc;
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v){
for(int i=0;i<n-1;i++){
E[u[i]].pb(v[i]);
E[v[i]].pb(u[i]);
}
int root=0;
/*for(int i=0;i<n;i++){
if(E[i].size()==1) root=i;
}*/
DFS(root);
vector<int>lbl;for(int i=0;i<n;i++) lbl.pb(in[i]+1000*out[i]);
for(int i=0;i<=n;i++) E[i].clear(),in[i]=out[i]=0,nc=-1;
return lbl;
}
int find_next_station(int s, int t, std::vector<int> c){
/*int res=c[0];
if(s<t){
for(int i=0;i<c.size();i++){
int u=c[i];
if(u>s) res=u;
}
}
else{
for(int i=0;i<c.size();i++){
int u=c[i];
if(u<s) res=u;
}
}*/
int res=c[0];
if(s%1000<=t%1000&&t%1000<=s/1000){
for(auto i:c){
if(i%1000<=t%1000) res=i;
}
}
else{
for(auto i:c){
if(i%1000<s%1000) res=i;
}
}
return res;
}
# | 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... |