Submission #1311312

#TimeUsernameProblemLanguageResultExecution timeMemory
1311312ayathkStations (IOI20_stations)C++20
0 / 100
382 ms484 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; //#define int long long #define fi first #define se second #define all(a) a.begin(), a.end() vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> dp(n,1000); vector <vector <int>> adj(n); int b = 0; for(int i = 0;i < n - 1;i++){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); if(adj[u[i]].size() > 2)b = u[i]; else if(adj[v[i]].size() > 2)b = v[i]; } dp[b] = 0; int cnt = 1; queue <int> t; for(int i : adj[b]){ dp[i] *= cnt; dp[i]++; t.push(i); cnt++; } while(!t.empty()){ int f = t.front(); t.pop(); for(int i : adj[f]){ if(dp[i] != 1000)continue; dp[i] = dp[f] + 1; t.push(i); } } return dp; } int find_next_station(int s, int t, vector<int> c) { if(s == 0){ for(int i : c){ if(i/1000 == t/1000)return i; } } if(t == 0){ return s + 1; } if(t/1000 == s/1000){ if(t > s){ return s + 1; } else{ return s - 1; } } else{ if(s % 10 == 1){ return 0; } else{ return s - 1; } } } /*signed main(){ vector <int> a = label(5, 8 ,{0,0,1,1}, {1,2,4,3}); for(int i : a){ cout<<i<<' '; } }*/
#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...