rt,以第一篇题解为例:
dfs 的过程中对经过的所有结点 v 值都改为 1:
bool dfs(int x) {
if (v[x>n?x-n:x+n]) return 0;
v[x] = 1;
for (ui i = 0; i < e[x].size(); i++) {
int y = e[x][i];
if (!v[y] && !dfs(y)) return 0;
}
return 1;
}
若下面第一行的 dfs 返回 0,为什么没有将 v 值重新改为 0?
if (dfs(i + a[x] * n)) s[i] = x + 'a' - 1;
else if (dfs(i + a[y] * n)) s[i] = y + 'a' - 1;