Submission #1241706

#TimeUsernameProblemLanguageResultExecution timeMemory
1241706ghammazhassanStations (IOI20_stations)C++20
100 / 100
310 ms568 KiB
#include <bits/stdc++.h> using namespace std; const int N=1e3+5; vector<int>a[N]; int dep[N]; int ce=0; void dfs(int x,int y,vector<int> &labels){ if (x!=0){ dep[x]=dep[y]+1; } if (dep[x]%2==0){ labels[x]=ce; ce++; } for (int i:a[x]){ if (i==y)continue; dfs(i,x,labels); } if (dep[x]%2){ labels[x]=ce; ce++; } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> labels(n); for (int i = 0; i < n; i++) { labels[i] = i; } for (int i=0;i<n-1;i++){ int x=u[i]; int y=v[i]; a[x].push_back(y); a[y].push_back(x); } ce=0; dfs(0,-1,labels); for (int i=0;i<n;i++){ a[i].clear(); // cout << labels[i] << endl; } return labels; } int find_next_station(int s, int p, vector<int> c) { if (c[0]>s){ if (p>s){ for (int i:c){ if (i>=p){ return i; } } return c[c.size()-1]; } else{ reverse(c.begin(),c.end()); for (int i:c){ if (i<=p){ return i; } } return c[0]; } } else{ if (p<s){ reverse(c.begin(),c.end()); for (int i:c){ if (i<=p){ return i; } } return c[c.size()-1]; } else{ for (int i:c){ if (i>=p){ return i; } } 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...