#include "stations.h"
#include<bits/stdc++.h>
using namespace std;
//Subtask 1
vector<int> ad[1005];
int deg[1005], tin[1005], tout[1005], dfsc = 0;
bool visited[1005];
int decode(int x, int y)
{
x--; y--;
//x >= y
int ans = x*(x+1)/2;
return ans + y;
}
pair<int, int> encode(int x)
{
int p = 0;
while(p*(p+1)/2 <= x) p++;
p--;
return {p+1, x - p*(p+1)/2+1};
}
void dfs(int u)
{
visited[u] = 1; tin[u] = dfsc;
bool befchild = 0;
for(int v : ad[u]) if(visited[v] == 0){
dfs(v);
if(befchild == 1) dfsc++;
befchild = 1;
}
tout[u] = dfsc;
}
vector<int> label(int n, int k, vector<int> a, vector<int> b)
{
for(int i = 0; i < n; i++){
deg[i] = 0; ad[i].clear(); visited[i] = 0;
}
for(int i = 0; i < n-1; i++){
deg[a[i]]++; deg[b[i]]++;
ad[a[i]].push_back(b[i]);
ad[b[i]].push_back(a[i]);
}
dfsc = 1; dfs(0);
vector<int> ans(n);
for(int i = 0; i < n; i++) ans[i] = decode(tout[i], tin[i]);
return ans;
}
bool ancestor(int x, int y)
{
pair<int, int> cx = encode(x);
int tix = cx.second, tox = cx.first;
pair<int, int> cy = encode(y);
int tiy = cy.second, toy = cy.first;
return tix <= tiy && toy <= tox;
}
int find_next_station(int s, int t, vector<int> c)
{
if(ancestor(s, t) == 0){
for(int i : c) if(ancestor(i, s) == 1) return i;
}
for(int i : c) if(ancestor(i, s) == 0 && ancestor(i, t) == 1) return i;
return -1;
}
/*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... |