Submission #538420

#TimeUsernameProblemLanguageResultExecution timeMemory
538420jamielimSpeedrun (RMI21_speedrun)C++14
0 / 100
155 ms740 KiB
#include "speedrun.h" #include <bits/stdc++.h> using namespace std; #define pb emplace_back int n; vector<int> adj[2005]; int par[2005]; vector<int> ord; int c[2005]; void dfs(int x){ ord.pb(x); for(int i:adj[x]){ if(par[x]==i)continue; par[i]=x; dfs(i); } } void assignHints(int subtask, int N, int A[], int B[]) { n=N; for(int i=0;i<n-1;i++){ adj[A[i]].pb(B[i]); adj[B[i]].pb(A[i]); } dfs(1); for(int i=0;i<n-1;i++){ c[ord[i]]=ord[i+1]; } par[1]=1; c[ord[n-1]]=0; setHintLen(20); for(int i=1;i<=n;i++){ for(int j=1;j<=10;j++){ if(par[i]&(1<<(j-1)))setHint(i,j,1); else setHint(i,j,0); } for(int j=11;j<=20;j++){ if(c[i]&(1<<(j-11)))setHint(i,j,1); else setHint(i,j,0); } } } int getParent(){ int ans=0; for(int i=1;i<=10;i++){ ans|=(1<<(i-1)); } return ans; } int getNext(){ int ans=0; for(int i=11;i<=20;i++){ ans|=(1<<(i-11)); } return ans; } void speedrun(int subtask, int N, int start) { int cur=start; par[cur]=getParent(); while(cur!=par[cur]){ goTo(par[cur]); cur=par[cur]; par[cur]=getParent(); } for(int i=1;i<N;i++){ int nxt=getNext(); if(nxt==0)break; while(!goTo(nxt)){ goTo(par[cur]); cur=par[cur]; par[cur]=getParent(); } cur=nxt; par[cur]=getParent(); } }
#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...