题目名称 4345. 砍树
输入输出 cuttree.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 GravatarRuyi 于2026-03-12加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:2, 提交:2, 通过率:100%
GravatarPXCZM 100 0.835 s 51.34 MiB C++
GravatarRuyi 100 1.170 s 8.11 MiB C++
本题关联比赛
ry分享赛
关于 砍树 的近10条评论(全部评论)

4345. 砍树

★★★   输入文件:cuttree.in   输出文件:cuttree.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目背景】

这不是一道交互题

这里不需要你比较空集的大小

这里不需要你自己配置环境

选手不需要也不应该不实现main函数

【题目描述】

你面前有一棵树

这棵树有$n-1$个节点,编号从$0$到$n-1$,由$n-1$根树枝连接

对于点$i$,其有$son_i$个儿子,同时有$p_i$的权值

对于所有点,还有$m$的最大承重量

本题中,一个点$i$的重量计算方式为$w_i=son_i+p_i$

砍掉点$i$的定义是,$i$节点上的权值加到它的父节点的权值上,它的儿子节点连到$i$的父节点上,这个点被删除

你想要知道,最多可以砍掉多少个节点

大样例

【输入格式】

第一行输入两个正整数,$n$和$m$分别表示节点个数和最大载重

第二行$n$个整数$p_i$,表示第$i$个节点上的权值

接下来$n$行,每行第一个数$son_i$表示这个节点的儿子个数,接下来$son_i$个整数表示这个节点儿子的编号

【输出格式】

一行一个整数,表示最多能删除多少节点

【样例输入】

10 4
0 2 2 2 4 1 0 4 1 1
3 6 2 3
1 9
1 8
1 1
0
0
2 7 4
0
1 5
0

【样例输出】

4

【数据规模与约定】

对于$30$%的数据,$n≤5×10^3,m≤100,p_i≤100$

对于$70$%的数据,$n≤2×10^5,m≤2×10^3,p_i≤10^3$

对于$100$%的数据,$n≤2×10^6,m≤10^5,p_i≤10^3$

保证初始时合法