#include "speedrun.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> adj[1005], vec;
int par[1005];
void dfs(int u)
{
vec.push_back(u);
for (int v:adj[u])
{
if (v==par[u])
continue;
par[v]=u;
dfs(v);
}
}
void assignHints(int subtask, int n, int a[], int b[])
{
setHintLen(20);
for (int i=1; i<n; i++)
{
adj[a[i]].push_back(b[i]);
adj[b[i]].push_back(a[i]);
}
dfs(1);
for (int i=0; i<vec.size(); i++)
{
for (int j=0; j<10; j++)
setHint(vec[i], j, par[vec[i]]&(1<<j));
if (i+1<vec.size())
for (int j=10; j<20; j++)
setHint(vec[i], j, vec[i+1]&(1<<(j-10)));
}
}
void speedrun(int subtask, int n, int cur)
{
while (cur!=1)
{
cur=0;
for (int i=0; i<10; i++)
if (getHint(i))
cur|=1<<i;
goTo(cur);
}
for (int i=1; i<n; i++)
{
int nxt=0;
for (int j=10; j<20; j++)
if (getHint(j))
nxt|=1<<(j-10);
while (!goTo(nxt))
{
cur=0;
for (int j=0; j<10; j++)
if (getHint(j))
cur|=1<<j;
goTo(cur);
}
}
}
# | 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... |