#include "stations.h"
#include<bits/stdc++.h>
using namespace std;
//Subtask 2
vector<int> ad[1005];
int ans[1005];
bool visited[1005];
void dfs(int u)
{
visited[u] = 1;
for(int i = 0; i < ad[u].size(); i++){
ans[ad[u][i]] = ans[u] * 7 + i;
dfs(ad[u][i]);
}
}
vector<int> label(int n, int k, vector<int> a, vector<int> b)
{
for(int i = 0; i < n; i++){
ad[i].clear(); visited[i] = 0;
}
for(int i = 0; i < n-1; i++){
if(a[i] > b[i]) swap(a[i], b[i]);
ad[a[i]].push_back(b[i]);
}
ans[0] = 1; dfs(0);
vector<int> an(n);
for(int i = 0; i < n; i++) an[i] = ans[i];
return an;
}
int lca(int u, int v)
{
while(u != v){
if(u < v) swap(u, v);
u /= 7;
}
return u;
}
int find_next_station(int s, int t, vector<int> c)
{
int r = lca(s, t);
if(s == r){
while(t/7 > s) t /= 7;
return t;
}
else return s/7;
}
/*int main()
{
int type; cin>>type;
if(type == 1){
vector<int> a, b;
int n; cin>>n;
for(int i = 0; i < n-1; i++){
int u, v;
cin>>u>>v;
a.push_back(u);
b.push_back(v);
}
vector<int> ans = label(n, 0, a, b);
for(int i : ans) cout<<i<<" ";
}
else{
int s, t, n;
cin>>s>>t>>n;
vector<int> adj(n);
for(int i = 0; i < n; i++) cin>>adj[i];
cout<<find_next_station(s, t, adj);
}
}*/
# | 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... |