#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){
        if(befchild == 1) dfsc++;
        dfs(v);
        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... |