#include "stations.h"
#include <vector>
#include <iostream>
using namespace std;
int root;
vector<vector<int>> adj;
vector<bool> vis;
vector<int> lab;
void dfs(int n){
	vis[n]=true;
	for(int i: adj[n]){
		if(vis[i])continue;
		lab[i]=lab[n]+1;
		dfs(i);
	}
}
vector<int> label(int N, int K, std::vector<int> u, std::vector<int> v) {
	adj.resize(N,{});
	int occ[N];
	for(int i=0;i<N;i++){
		occ[i]=0;
	}
	root=0;
	for (int i = 0; i < N; i++) {
		occ[u[i]]++;
		if(occ[u[i]]>2 && root==0){
			root=u[i];
		}
		occ[v[i]]++;
		if(occ[v[i]]>2 && root==0){
			root=v[i];
		}
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
	}
	vis.resize(N,false);
	lab.resize(N);
	lab[root]=0;
	for(int i: adj[root]){
		lab[i]=(i*1000)+1;
		dfs(i);
	}
	return lab;
}
int find_next_station(int s, int t, std::vector<int> c) {
	if (c.size()==1){
		return c[0];
	}
	if(s==root){
		for(int i: c){
			if(i/1000 ==t){
				return i;
			}
		}
	}
	if(s/1000 == t/1000){
		if(t<s){
			return min(c[0],c[1]);
		}
		return max(c[0],c[1]);
	}
	else{
		return min(c[0],c[1]);
	}
	return c[0];
}
| # | 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... |