This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "stations.h"
#include <bits/stdc++.h>
#define mp make_pair
#define eb emplace_back
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define svec(x) sort(all(x))
#define press(x) x.erase(unique(all(x)), x.end());
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
typedef pair<int, LL> pil;
typedef pair<LL, int> pli;
typedef pair<LL, LL> pll;
const int INF=1e9;
const LL LLINF=1e18;
int n, re;
vector<int> link[1010], lab, id;
void dfs(int num, int par, int d){
re++;
if(d)lab[num-1]=re;
for(auto i:link[num]){
if(i==par)continue;
dfs(i, num, (d+1)%2);
}
if(!d)lab[num-1]=re;
re++;
}
vector<int> label(int _n, int k, vector<int> u, vector<int> v){
n=_n;
lab.clear();
id.clear();
lab.resize(n);
re=0;
for(int i=0; i<n-1; i++){
link[u[i]+1].eb(v[i]+1);
link[v[i]+1].eb(u[i]+1);
}
dfs(1, 0, 1);
for(int i=1; i<=n; i++)link[i].clear();
for(auto i:lab)id.eb(i);
svec(id); press(id);
for(auto &i:lab)i=lower_bound(all(id), i)-id.begin();
return lab;
}
int find_next_station(int s, int t, vector<int> c){
if(s>c.back())reverse(all(c));
for(auto i:c){
if(min(i, s)<=t&&t<=max(i, s))return i;
}
return c.back();
}
/*
1
5 10
0 1
1 2
1 3
2 4
*/
# | 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... |