This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include "speedrun.h"
using namespace std;
const int NN=1e3;
const int L=20;
vector<int> e[NN+10];
vector<int> pre,par;
void encode(int x,int c1,int c2)
{
int c=(c1<<10)+c2;
for(int i=1;i<=20;i++)
{
setHint(x,i,c%2);
c/=2;
}
return;
}
void dfs(int x,int p)
{
pre.push_back(x);
par.push_back(p);
for(auto v:e[x])
{
if(v!=p)
dfs(v,x);
}
return;
}
void assignHints(int subtask, int N, int A[], int B[])
{
setHintLen(L);
for(int i=1;i<N;i++)
{
e[A[i]].push_back(B[i]);
e[B[i]].push_back(A[i]);
}
dfs(1,0);
pre.push_back(pre[0]);
for(int i=0;i<N;i++)
encode(pre[i],pre[i+1],par[i]);
return;
}
pair<int,int> decode(int x)
{
int ans=0;
for(int i=20;i>=1;i--)
ans=2*ans+getHint(i);
return {(ans>>10),ans%(1<<10)};
}
void speedrun(int subtask, int N, int start)
{
int x=start;
while(x!=1)
{
x=decode(x).second;
goTo(x);
}
for(int i=1;i<=N;i++)
{
int y=decode(x).first;
while(!goTo(y))
{
x=decode(x).second;
goTo(x);
}
}
return;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |