正确性证明求助
查看原帖
正确性证明求助
516353
Themooncake楼主2023/12/29 13:35

定义 f[rt][0/1/2]f[rt][0/1/2] 表示以 rtrt 为根的子树,选择了 rtrt/没选择 rtrt,但是 rtrt 被点亮了/rtrt 没有被点亮,其他节点全部被点亮的最小选择点数 理论上来说,如下的状态转移是错误的:

f[rt][0]=1;
f[rt][1]=N;
for(int i=Head[rt];i;i=E[i].nxt)
{
	int son=E[i].to;
	if(son==fa)	continue;
	dfs(son,rt);
	f[rt][0]+=min(min(f[son][0],f[son][1]),f[son][2]);
	f[rt][1]=min(f[rt][2]+f[son][0],f[rt][1]+min(f[son][0],f[son][1]));
	f[rt][2]+=f[son][1];
}

因为这种转移可能出现儿子全都不选的可能

但是,这段代码过了

我证不出来这段转移的正确性,求助

2023/12/29 13:35
加载中...