제출 #1292696

#제출 시각아이디문제언어결과실행 시간메모리
1292696ChuanChen기지국 (IOI20_stations)C++20
10 / 100
398 ms540 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; typedef unsigned short int usi; const int MAXN = 1e3+3; vector<usi> adj[MAXN]; usi tin[MAXN], tout[MAXN], tempo; void dfs(int no, int anc){ assert(tempo < 1000); tin[no] = tempo++; for(int v : adj[no]) if(v != anc){ dfs(v, no); } tout[no] = tempo; } vector<int> label(int n, int k, vector<int> u, vector<int> v){ for(int i = 0; i < n; i++) adj[i].clear(); tempo = 0; for (int i = 0; i < n-1; i++){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0, 0); vector<int> labels(n); for (int i = 0; i < n; i++) { labels[i] = tin[i]*1000+tout[i]; } return labels; } inline int _tin(int a){ return a/1000; } inline int _tout(int a){ return a%1000; } int find_next_station(int s, int t, vector<int> c) { if(_tin(s) <= _tin(t) && _tout(t) <= _tout(s)){ //t eh filho for(int l : c){ if(_tin(l) <= _tin(s) && _tout(s) <= _tout(l)) continue; if(_tin(l) <= _tin(t) && _tout(t) <= _tout(l)){ //t eh meu filho return l; } } } for(int l : c){ if(_tin(l) <= _tin(s) && _tout(s) <= _tout(l)) return l; } return c[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...