Submission #765374

#TimeUsernameProblemLanguageResultExecution timeMemory
765374vjudge1Speedrun (RMI21_speedrun)C++17
0 / 100
14 ms23776 KiB
#include <algorithm> #include <iostream> #include <iomanip> #include <bitset> #include <cmath> #include <queue> #include <map> #include <set> #include "speedrun.h" // Akhmet Issa using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define ent "\n" const int maxn = 1e6 + 100; const ll INF = (ll)2e18; const int inf = (ll)2e9; const int maxl = 20; const int MOD = 1e9 + 7; vector<int> g[maxn]; vector<int> ord; void calc(int v, int pr){ ord.push_back(v); setHintLen(20); for(int to: g[v]){ if(to != pr){ for(int j = 0; j < 10; j++){ if(v & (1<<j)) setHint(to, j + 11, 1); } calc(to, v); } } } void assignHints(int subtask, int n, int A [], int B []){ for(int i = 1; i < n; i++){ g[A[i]].push_back(B[i]); g[B[i]].push_back(A[i]); } calc(1, 0); for(int i = 0; i < n - 1; i++){ for(int j = 0; j < 10; j++){ if(ord[i+1] & (1<<j)) setHint(ord[i], j + 1, 1); } } } int get(int p){ int ans = 0; for(int i = 0; i < 10; i++){ if(getHint(p + i)) ans |= (1<<i); } return ans; } void dfs(int v, int to){ if(!to) return; if(goTo(to)){ int nxt = get(1); dfs(to, nxt); } else{ int pr = get(11); dfs(pr, to); } } void speedrun(int subtask, int n, int start){ while(start != 1){ start = get(11); goTo(start); } dfs(1, get(1)); }
#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...