#include "speedrun.h"
#include <bits/stdc++.h>
using namespace std;
#define Set setHint
#define go goTo
#define get getHint
const int M = 1001;
vector<int> nei[M],ord;
int Par[M];
void dfs(int u)
{
ord.push_back(u);
for (int i:nei[u])
if (i!=Par[u])
Par[i]=u,dfs(i);
}
void assignHints(int subtask, int n, int a[], int b[])
{
setHintLen(20);
for (int i=1;i<n;i++)
nei[a[i]].push_back(b[i]),nei[b[i]].push_back(a[i]);
dfs(1);
ord.push_back(0);
for (int i=1;i<=n;i++)
for (int p=0;p<10;p++)
{
Set(i,p+1,(Par[i]>>p)%2);
Set(ord[i-1],p+11,(ord[i]>>p)%2);
}
}
int calc()
{
int ans=0;
for (int p=11,pw=1;p<=20;p++,pw*=2)
ans+=get(p)*pw;
return ans;
}
int par()
{
int ans=0;
for (int p=1,pw=1;p<=10;p++,pw*=2)
ans+=get(p)*pw;
return ans;
}
void speedrun(int subtask, int n, int s)
{
int u=s;
getLength();
while (u!=1)
u=par(),go(u);
int nx=calc();
set<int> se={0,u};
while (nx)
{
if (go(nx))
{
u=nx,nx=calc();
se.insert(u);
}
else
go(par());
}
}
# | 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... |