# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
306903 | 2020-09-26T14:08:31 Z | giorgikob | Stations (IOI20_stations) | C++14 | 0 ms | 0 KB |
#include "stations.h" #include <vector> #include<bits/stdc++.h> #define ll long long #define ff first #define ss second #define pb push_back using namespace std; const int N = 1e3+5; vector<int>gr[N]; int cnt = 0; int fix[N]; //int c = 0; void dfs(int x, vector<int>&v, cnt){ fix[x] = 1; v[x] = cnt; cnt++; for(auto to : gr[x]){ if(fix[to]) continue; dfs(to,v, cnt); } } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { std::vector<int> labels(n,0); for(int i = 0; i < u.size(); i++){ int x = u[i]; int y = v[i]; gr[x].pb(y); gr[y].pb(x); } cnt = 0; for(int i = 0; i < n; i++){ if(gr[i].size() == 1){ dfs(i,labels,0); break; } } //for(auto x : labels) cout << x <<" "; cout << endl; //if(labels[0] == 0) dfs(0,labels); for(int i = 0; i < n; i++) gr[i].clear(); return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(c.size() == 1) return c[0]; if(s > t) return c[0]; return c[1]; }