社区讨论
转移正确性求助
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lqw1c3sw
- 此快照首次捕获于
- 2024/01/02 15:35 2 年前
- 此快照最后确认于
- 2024/01/02 20:19 2 年前
定义 表示以 为根的子树,除了根节点其他节点都保证点亮,选择了根节点/选择了至少一个根节点的儿子/根节点未被点亮时最少要选择多少个节点。
转移如下:
CPPvoid dfs(int rt,int fa)
{
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];
}
}
答案取
个人感觉这个转移是错误的,因为可能会有 全是 转移过来的情况,但这个 dfs 它过了,不知道怎么证伪。
玄关
回复
共 0 条回复,欢迎继续交流。
正在加载回复...