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 <iostream>
#include <vector>
using namespace std;
const int N1 = 1005;
vector<int> nei[N1];
int d[N1], num[N1], c;
bool seen[N1];
void dfs1(int u, int p = -1){
num[u] = c++;
for (int i : nei[u])
if (i != p)
dfs1(i, u);
}
vector<int> label(int n, int k, vector<int> u, vector<int> v){
for (int i=0;i<n-1;i++){
nei[u[i]].push_back(v[i]);
nei[v[i]].push_back(u[i]);
d[u[i]]++;
d[v[i]]++;
}
vector<int> lab(n, 0);
int mx = 0;
for (int i=0;i<n;i++)
if (d[i] > d[mx])
mx = i;
int cr = 0;
if (d[mx] > 2){
for (int i : nei[mx])
c = cr * 1000, cr++, dfs1(i, mx);
num[mx] = 1e6;
for (int i=0;i<n;i++)
lab[i] = num[i];
return lab;
}
return lab;
}
int find_next_station(int s, int t, vector<int> lab){
if (lab.size() == 1)
return lab[0];
if (lab[0] == t or lab[1] == t)
return t;
if (s == 1e6){
int lst = lab[0];
for (int i : lab){
if (i > t)
return lst;
lst = i;
}
return lst;
}
if (t == 1e6){
return lab[0];
}
if (s / 1000 != t / 1000){
if (lab[1] == 1e6)
return lab[1];
return lab[0];
}
if (lab.size() == 2){
if (abs(lab[0] - t) < abs(lab[1] - t))
return lab[0];
return lab[1];
}
}
Compilation message (stderr)
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:75:1: warning: control reaches end of non-void function [-Wreturn-type]
75 | }
| ^
# | 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... |