#include "stations.h"
#include<bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
#define pb push_back
vi labels(1005);
#define sz(u) (int(u.size()))
int cnt = 0;
int dfs(int no, int fat, vvi &ed){
int label = cnt;
cnt++;
int subtreesz = 1;
for(auto e:ed[no]){
if(e == fat)continue;
subtreesz += dfs(e, no, ed);
}
label *= 1000;
label += (subtreesz-1);
labels[no] = label;
return subtreesz;
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
cnt = 0;
vvi ed(n+1);
for(int i = 0; i < sz(u); ++i){
ed[u[i]].pb(v[i]);
ed[v[i]].pb(u[i]);
}
dfs(0, -1, ed);
vi ans;
for(int i = 0; i < n; ++i){
ans.pb(labels[i]);
}
return ans;
}
int find_next_station(int s, int t, std::vector<int> c) {
int source = s / 1000;
int target = t / 1000;
int ssize = s % 1000;
if( (target < source) || (target > (source + (ssize))) ){
for(auto e:c){
int node = e/1000;
if(node < source){
return e;
}
}
return c[0];
}else{
for(auto e:c){
int node = e / 1000;
int nodesize = e % 1000;
if(node < source)continue;
if(target >= node && target <= (node + nodesize)){
return e;
}
}
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... |