제출 #1024415

#제출 시각아이디문제언어결과실행 시간메모리
1024415Ahmed_Solyman기지국 (IOI20_stations)C++14
0 / 100
614 ms1200 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; vector<vector<int>>adj; vector<int>l,r,p,ret; int mark=0; void dfs(int node,int par,int dep){ if(dep)ret[node]=mark++; for(auto i:adj[node]) if(i!=par)dfs(i,node,1-dep); if(!dep)ret[node]=mark++; } vector<int> label(int n, int k, vector<int> u, vector<int> v){ mark=0; l=r=p=ret=vector<int>(n); adj=vector<vector<int>>(n); 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,1); return ret; } int find_next_station(int s, int t,vector<int> c){ int m=(int)c.size(); for(int i=0;i<m;i++){ if(c[i]==t)return t; } if(s==0){ for(int i=m-1;i>=0;i--){ int in=(i==0?s+1:c[i-1]+1); int out=c[i]; if(t>in && t<out){ return c[i]; } } assert(0); } if(s<c[0]){///given is the in[s] int p=c[m-1]; for(int i=m-2;i>=0;i--){ int in=(i==0?s+1:c[i-1]+1); int out=c[i]; if(t>=in && t<=out){ return c[i]; } } return p; } else{///given is the out[s] int p=c[0]; for(int i=1;i<m;i++){ int in=c[i]; int out=(i==m-1?s-1:c[i+1]-1); if(t>=in && t<=out){ return c[i]; } } return p; } }
#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...