#include <bits/stdc++.h>
#include "speedrun.h"
using namespace std;
using vi = vector <int>;
void assignHints (int subtask, int n, int u[], int v[]) {
if (subtask==1){setHintLen(n);
for (int i = 1; i <= n-1; i++) {
setHint(u[i], v[i], true);
setHint(v[i], u[i], true);
}
return;
}
if (subtask==2) {
setHintLen(20);
int freq[n+1]{};
for (int i=1; i <= n-1; i++) {
freq[u[i]]++;
freq[v[i]]++;
}
int u = max_element(freq, freq+n+1)-freq;
for (int i=1; i <= n; i++) {
for (int bit=0; bit < 20; bit++) {
setHint(i, bit+1, u>>bit&1);
}
}
return;}
bool vis[n+5]{};
int freq[n+1]{};
vi adj[n+5];
for (int i = 1; i <= n-1; i++) {
adj[u[i]].push_back(v[i]);
adj[v[i]].push_back(u[i]);
}
for (int i=1; i <= n-1; i++) {
freq[u[i]]++;
freq[v[i]]++;
}
int u = min_element(freq, freq+n+1)-freq;
vis[u]=true;
while (true) {
int v=-16;
for (int vv : adj[u]) {
if (vis[vv]) continue;
vis[vv]=true;
v = vv;
break;
}
if (v==-16) {
for (int bit=0; bit < 20; bit++) {
setHint(u, bit+1, u>>bit&1);
}
break;
}
for (int bit=0; bit < 20; bit++) {
setHint(u, bit+1, v>>bit&1);
}
u=v;
}
}
const static void dfs1 (int u, int par, int n) {
for (int v = 1; v <= n; v++) {
if (v == u) continue;
if (v == par) continue;
if (getHint(v)) {
goTo(v);
dfs1(v, u, n);
goTo(u);
}
}
return;
};
void speedrun (int subtask, int n, int at) {
if (subtask==1) {dfs1(at, at, n); return;}
if (subtask==2) {int root=0;
for (int bit=0; bit < 20; bit++) {
root |= getHint(bit+1)<<bit;
}
goTo(root);
for (int u=1; u <= n; u++) {
if (u==root)continue;
goTo(u);
goTo(root);
}
return;}
bool vis[n+5]{};
int to=0;
while (true) {
vis[at]=true;
to=0;
for (int bit=0; bit < 20; bit++) {
to |= getHint(bit+1)>>bit;
}
if (!vis[to]) {
goTo(to);
at=to;
to=0;
continue;
}
bool die=true;
for (int i = 1; i <= n; i++) {
if (vis[i]) continue;
if (!goTo(i)) continue;
at=i;
die=false;
break;
}
if (die) break;
}
return;
}
Compilation message
speedrun.cpp: In function 'void assignHints(int, int, int*, int*)':
speedrun.cpp:40:9: error: declaration of 'int u' shadows a parameter
40 | int u = min_element(freq, freq+n+1)-freq;
| ^
speedrun.cpp:6:43: note: 'int* u' previously declared here
6 | void assignHints (int subtask, int n, int u[], int v[]) {
| ~~~~^~~