Submission #498851

#TimeUsernameProblemLanguageResultExecution timeMemory
498851SlavicGSpeedrun (RMI21_speedrun)C++17
100 / 100
168 ms928 KiB
#include "speedrun.h" #include "bits/stdc++.h" using namespace std; #define pb push_back #define sz(a) (int)a.size() vector<int> st; void dfsHint(int u, int par, vector<vector<int>>& adj, vector<int>& parent){ st.pb(u); parent[u] = par; for(int v: adj[u]){ if(v == par)continue; dfsHint(v, u, adj, parent); } } void assignHints(int subtask , int n, int a[], int b[]){ setHintLen(20); vector<vector<int>> adj(n + 1); for(int i = 1;i <= n - 1; ++i){ adj[a[i]].pb(b[i]); adj[b[i]].pb(a[i]); } vector<int> right_neighbor(n + 1, 0), parent(n + 1, 0), left_child(n + 1, 0); dfsHint(1, 0, adj, parent); vector<int> nxt(n + 1, 0); for(int i = 0;i < sz(st); ++i){ nxt[st[i]] = st[(i + 1) % sz(st)]; } for(int i = 1;i <= n; ++i){ int idx = 1; for(int j = 9;j >= 0; --j){ if(parent[i] & (1 << j))setHint(i, idx, 1); ++idx; } for(int j = 9;j >= 0; --j){ if(nxt[i] & (1 << j))setHint(i, idx, 1); ++idx; } } } int cnt; void dfs(int u, vector<bool>& vis, int need){ if(!vis[u])--cnt; vis[u] = true; if(!cnt)exit(0); int par = 0, nxt = 0, idx = 1; for(int j = 9;j >= 0; --j){ if(getHint(idx))par += (1 << j); ++idx; } for(int j = 9;j >= 0; --j){ if(getHint(idx))nxt += (1 << j); ++idx; } if(need == -1)need = nxt; int x = goTo(need); if(x){ dfs(need, vis, -1); }else{ assert(par != 0); goTo(par); dfs(par, vis, need); } } void speedrun(int subtask, int n, int start){ int l = getLength(); vector<bool> vis(n + 1, false); cnt = n; dfs(start, vis, -1); }

Compilation message (stderr)

speedrun.cpp: In function 'void speedrun(int, int, int)':
speedrun.cpp:75:9: warning: unused variable 'l' [-Wunused-variable]
   75 |     int l = getLength();
      |         ^
#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...