Submission #1118600

#TimeUsernameProblemLanguageResultExecution timeMemory
1118600peraSpeedrun (RMI21_speedrun)C++17
0 / 100
408 ms1216 KiB
#include<bits/stdc++.h> #include "speedrun.h" using namespace std; void assignHints(int subtask , int N , int A[] , int B[]){ vector<vector<int>> g(N + 1); for(int i = 1;i <= N - 1;i ++){ g[A[i]].emplace_back(B[i]); g[B[i]].emplace_back(A[i]); } vector<int> par(N + 1) , o; function<void(int)> dfs = [&](int u){ o.emplace_back(u); for(int v : g[u]){ if(v != par[u]){ par[v] = u; dfs(v); } } }; dfs(1); setHintLen(20); for(int i = 1;i <= N;i ++){ for(int bit = 0;bit < 10;bit ++){ setHint(i , bit + 1, par[i] >> bit & 1); } for(int bit = 0;bit < 10;bit ++){ setHint(i , bit + 10 + 1 , o[i % N] >> bit & 1); } } } void speedrun(int subtask , int N , int v){ int c = 0 , nxt = 0; vector<int> vis(N + 1); while(c < N){ c += vis[v] == 0; vis[v] = 1; if(nxt == 0){ for(int bit = 0;bit < 10;bit ++){ nxt += (1 << bit) * getHint(bit + 10 + 1); } } assert(0 < nxt && nxt <= N); if(goTo(nxt) == true){ v = nxt; nxt = 0; }else{ int par = 0; for(int bit = 0;bit < 10;bit ++){ par += (1 << bit) * getHint(bit + 1); } assert(0 < par && par <= N); goTo(par); v = par; } } return; }
#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...