蒟蒻的一点疑问
查看原帖
蒟蒻的一点疑问
209454
watermonster楼主2020/11/21 10:11

RT

为什么这样写能AC

il void getdis(int x,int f)
{
	st[++top]=(info){dis[x],dep[x]};
	for(re int i=h[x];i;i=e[i].nxt)
		if(!vis[e[i].v]&&e[i].v^f)
		{
			dis[e[i].v]=dis[x]+e[i].w;
			dep[e[i].v]=dep[x]+1;
			getdis(e[i].v,x);
		}
	return;
}

但是这样写会WA?

il void getdis(int x,int f)
{
	if(dep[x]>L||dis[x]>W) return;
	st[++top]=(info){dis[x],dep[x]};
	for(re int i=h[x];i;i=e[i].nxt)
		if(!vis[e[i].v]&&e[i].v^f)
		{
			dis[e[i].v]=dis[x]+e[i].w;
			dep[e[i].v]=dep[x]+1;
			getdis(e[i].v,x);
		}
	return;
}

区别只有if(dep[x]>L||dis[x]>W) return;

但是dep[x]>Ldep[x]>L或者dis[x]>Wdis[x]>W应该就不会对答案有贡献了。没有负边权,当前点没贡献子树中的点应该也不会有啊。

2020/11/21 10:11
加载中...