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 "speedrun.h"
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pii pair<int,int>
#define pb push_back
vector <int> g[1005];
int dfn[1005],par[1005],clk;
void dfs0(int u,int fa)
{
dfn[u]=++clk,par[u]=fa;
for(int i=0;i<g[u].size();i++) if(g[u][i]!=fa) dfs0(g[u][i],u);
}
void assignHints(int subtask, int N, int A[], int B[])
{
setHintLen(20);
// return;
for(int i=1;i<N;i++) g[A[i]].pb(B[i]),g[B[i]].pb(A[i]);
dfs0(1,0);
for(int i=1;i<=N;i++)
{
for(int j=0;j<10;j++) setHint(i,j+1,((par[i]&(1<<j))?1:0));
int nxt=0;
for(int j=1;j<=N;j++) if(dfn[j]==dfn[i]+1) nxt=j;
for(int j=0;j<10;j++) setHint(i,j+11,((nxt&(1<<j))?1:0));
}
}
int getpar()
{
int res=0;
for(int j=0;j<10;j++) if(getHint(j+1)) res+=(1<<j);
return res;
}
int getnxt()
{
int res=0;
for(int j=0;j<10;j++) if(getHint(j+11)) res+=(1<<j);
return res;
}
int vis[1005];
void speedrun(int subtask, int N, int start)
{
int L=getLength();
int u=start;
vis[u]=1;
int cnt=1;
while(getpar()) u=getpar(),vis[u]=1,cnt++,goTo(u);
int v=-1;
while(cnt<N)
{
if(v==-1) v=getnxt();
// cout<<u<<" "<<v<<"\n";
// system("pause");
if(goTo(v)) u=v,cnt+=(vis[u]^1),vis[u]=1,v=getnxt();
else u=getpar(),goTo(u);
}
}
Compilation message (stderr)
speedrun.cpp: In function 'void dfs0(int, int)':
speedrun.cpp:13:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
13 | for(int i=0;i<g[u].size();i++) if(g[u][i]!=fa) dfs0(g[u][i],u);
| ~^~~~~~~~~~~~
speedrun.cpp: In function 'void speedrun(int, int, int)':
speedrun.cpp:44:6: warning: unused variable 'L' [-Wunused-variable]
44 | int L=getLength();
| ^
# | 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... |