本题是树状管网物资调度的经典问题,AC代码如下
import sys
sys.setrecursionlimit(2000000)
def dfs(node, parent):
某地有一个包含 n 个节点的树状管网,节点编号为 1 到 n。第 i 个节点恰好需要 i 份物资才能正常运转,但初始时节点 i 存有 ci 份物资。保证所有节点的初始物资总和恰好等于所有节点的需求总和,即 ∑i=1nci=2n(n+1)。
每次操作可以将一份物资沿着管道从某个节点运送到与它直接相连的相邻节点。请计算最少需要多少次操作,才能使每个节点的物资数量都恰好等于其需求数量。
约束:节点个数 n 不超过 105,初始物资 ci 均为非负整数,且总和满足要求。管道数量为 n−1,保证整个管网连通。
第一行包含一个整数 n,表示节点数量。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册