在这份代码中, find函数里的那句
if(v == fa || vis[v])
如果吧 ||vis[v] 删掉,那么就会错。但是我已经把fa设成了第一个点的fa,那么为什么还会有访问到这颗子树之外的点的情况。求助
下面是分治的代码
void dev(int x)
{
solve(x, 0, 1);
vis[x] = 1;
for(int p = head[x]; p; p = nxt[p])
{
int v = to[p];
if(vis[v]) continue;
solve(v, val[p], -1);
sz = size[v], root = n + 1;
find(v, x);
dev(root);
}
}