Submission #1181407

#TimeUsernameProblemLanguageResultExecution timeMemory
1181407guagua0407Stations (IOI20_stations)C++20
5 / 100
301 ms588 KiB
#include "stations.h" //#include "stub.cpp" #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define all(x) x.begin(),x.end() #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { vector<vector<int>> adj(n); for(int i=0;i<n-1;i++){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } vector<int> st(n),en(n); int timer=-1; function<void(int,int)> dfs=[&](int v,int p){ st[v]=++timer; for(auto u:adj[v]){ if(u==p) continue; dfs(u,v); } en[v]=timer; }; int root=0; for(int i=0;i<n;i++){ if((int)adj[i].size()==1) root=i; } dfs(root,-1); vector<int> label(n); for(int i=0;i<n;i++){ label[i]=st[i]; //cout<<i<<' '<<label[i]<<'\n'; } return label; } int find_next_station(int s, int t, std::vector<int> C) { int a=s/1000; int b=s%1000; int c=t/1000; int d=t%1000; if(a<=c and d<=b){ //cout<<"b"<<'\n'; for(auto v:C){ int e=v/1000; int f=v%1000; if(e<=c and d<=f and a<=e and f<=b) return v; } } else{ for(auto v:C){ int e=v/1000; int f=v%1000; if(e<=a and b<=f) return v; } } assert(false); }
#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...