#include "speedrun.h"
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
void dfs_set_hints(ll n, ll p, vector<vector<ll>> &g){
for(ll i = 0; i < 10; i++) if(g[n][0] & (1 << i)) setHint(n, i+1, 1);
if(g[n].size() == 2) for(ll i = 0; i < 10; i++) if(g[n][1] & (1 << i)) setHint(n, i+11, 1);
for(ll k: g[n]) if(k != p) dfs_set_hints(k, n, g);
}
void assignHints(int subtask, int n, int A[], int B[]) {
setHintLen(20);
vector<vector<ll>> g(n+1);
for(ll i = 1; i < n; i++) g[A[i]].push_back(B[i]), g[B[i]].push_back(A[i]);
dfs_set_hints(1, 0, g);
}
void dfs_speedrun(ll n, ll p, ll l){
ll a = 0, b = 0;
for(ll i = 1; i <= 10; i++) if(getHint(i)) a += (1 << (i-1));
for(ll i = 11; i <= 20; i++) if(getHint(i)) b += (1 << (i-11));
if(a != p) {goTo(a); dfs_speedrun(a, n, l);}
if(b && b != p) {goTo(b); dfs_speedrun(b, n, l);}
if(p) goTo(p);
}
void speedrun(int subtask, int n, int start) {
dfs_speedrun(start, 0, n);
}
# | 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... |