Submission #1311342

#TimeUsernameProblemLanguageResultExecution timeMemory
1311342AhmadAlhussainStations (IOI20_stations)C++20
8 / 100
396 ms492 KiB
#include<bits/stdc++.h> #include <vector> using namespace std; const int N=1005; bool check(int a,int b) { if(b<a) { return false; } if((b>>(__builtin_clz(a)-__builtin_clz(b)))==a) { return true; } return false; } int a[N]={};vector<int>wss[N]; void dfs(int node,int past,int cnt) { a[node]=cnt; vector<int>v={2*cnt+1,2*cnt}; for(int i:wss[node]) { if(i!=past) { dfs(i,node,v.back()); v.pop_back(); } } } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { int cnt[N]={}; std::vector<int> labels(n); for (int i = 0; i < n-1; i++) { wss[u[i]].push_back(v[i]); wss[v[i]].push_back(u[i]); cnt[u[i]]++; cnt[v[i]]++; } for(int i=0;i<n;i++) { labels[i]=i+1; } for(int i=0;i<n;i++) { wss[i].clear(); a[i]=0; } return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(c.size()>=1&&check(c[c.size()-1],t)){ return c[c.size()-1]; } if(c.size()>=2&&check(c[c.size()-2],t)){ return c[c.size()-2]; } 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...