退役菜鸡求助
查看原帖
退役菜鸡求助
54544
LJB00131楼主2020/5/5 20:33

在这份代码中, 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);
	}
}
2020/5/5 20:33
加载中...