# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
330340 | 2020-11-24T20:35:35 Z | marvenlee | Stations (IOI20_stations) | C++14 | 0 ms | 0 KB |
#include "stations.h" #include <vector> #include <iostream> using namespace std; std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { std::vector<int> labels(n); vector< vector<int> > graph(n,vector<int>()); for(int i=0;i<n-1;i++){ graph[u[i]].push_back(v[i]); graph[v[i]].push_back(u[i]); } int s=0; for(int i=0;i<n;i++){ if(graph[i].size()==1) {s=i;break;} } int n=s,b=s; for(int i=0;i<n;i++){ labels[s]=i; //printf("%dst: %d, labels[s]:%d\n",i,s,labels[s]); for(auto j=graph[b].begin(); j!=graph[b].end();j++){ if(*j!=b){ b=c; c=n; n=*j; } } } //for(int i=0;i<n-1;i++) cout << labels[i] << " "; return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(c.size()==2){ if(c[0]>c[1]){ int temp=c[0]; c[0]=c[1]; c[1]=temp; } return (s<t)?c[1]:c[0]; } else return c[0]; }