This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#ifndef EVAL
#include "stub.cpp"
#endif
#include "stations.h"
#include <bits/stdc++.h>
#define fr first
#define sc second
#define pii pair<int, int>
#define pb push_back
#define szof(s) (int)s.size()
#define all(s) s.begin(), s.end()
using namespace std;
const int MAXN = 1005;
vector <int> g[MAXN];
void clean() {
for (int i = 0; i < MAXN; i++) {
g[i].clear();
}
}
int tin[MAXN], tout[MAXN], tiktak = 0;
int pr[MAXN];
void precalc(int v, int par) {
tin[v] = ++tiktak;
pr[v] = par;
for (int to : g[v]) {
if (to != par) {
precalc(to, v);
}
}
tout[v] = tiktak;
}
void up(int v, vector <int> &vec) {
vec.pb(v);
if (pr[v] != -1) {
up(v, vec);
}
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
clean(); // на всякий случай
for (int i = 0; i <= n - 2; i++) {
int x = u[i];
int y = v[i];
g[x].pb(y);
g[y].pb(x);
}
precalc(0, -1);
vector <int> labels(n);
for (int i = 0; i < n; i++) {
vector <int> vec;
up(i, vec);
int mask = 0;
for (int el : vec) {
mask += (1 << el);
}
labels[i] = mask;
}
return labels;
}
bool father(int a, int b) {
return ((a & b) == a);
}
int find_next_station(int s, int t, vector<int> c) {
if (father(s, t)) {
for (int el : c) {
if (father(s, el) && father(el, t)) {
return el;
}
}
}
for (int el : c) {
if (father(el, s)) {
return el;
}
}
assert(false);
return -1;
}
# | 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... |