# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
430725 | 2021-06-17T02:50:06 Z | JUANDI321 | 기지국 (IOI20_stations) | C++17 | 0 ms | 0 KB |
#include "stations.h" #include <vector> #include <iostream> #include <cstring> using namespace std; vector<vector<int>> g(1000+10); vector<int> l(1000 +10); bool ch[1010]; void dfs(int node, int i) { if(ch[node])return; ch[node]=true; l[i] = node; //cout<<node<<endl; for(auto y : g[node]) { if(!ch[y]) { dfs(y, i+1); } } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> labels(n); for(int i = 0; i < n-1; i++) { g[u[i]].push_back(v[i]); g[v[i]].push_back(u[i]); } int spn = 0; for(int i = 0; i < n; i++) { if(g[i].size() == 1) { spn = i; break; } } dfs(spn, 0);//cout<<"hola"<<endl; for (int i = 0; i < n; i++) { labels[l[i]] = i; //cout<<"l[i] "<<l[i]<<" i "<<i<<endl; } memset(ch, false, sizeof(ch)); for(int i=0; i<n; i++) G[i].clear() return labels; } int find_next_station(int s, int t, vector<int> c) { if(t>s)return s+1; return s-1; }