# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1174802 | khanhphucscratch | Stations (IOI20_stations) | C++20 | 0 ms | 0 KiB |
#include "stations.h"
#include<bits/stdc++.h>
using namespace std;
//Subtask 1
vector<int> ad[1005], order;
int deg[1005];
bool visited[1005];
void dfs(int u, int par)
{
order.push_back(u); visited[u] = 1;
for(int v : ad[u]) if(visited[v] == 0) dfs(v, u);
}
vector<int> label(int n, int k, vector<int> a, vector<int> b)
{
for(int i = 0; i < n; i++){
deg[i] = 0; order[i].clear(); 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]);
}
int root = 0;
while(deg[root] == 2){
root++;
}
dfs(root, -1);
vector<int> ans(n);
for(int i = 0; i < n; i++) ans[order[i]] = i;
return ans;