이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |