P13941 [EC Final 2019] Fire

题目描述

$\textit{Pang}$ 住在一棵有 $n$ 个节点的树上。节点编号为 $1,2,\ldots, n$,$\textit{Pang}$ 起初在节点 $1$。每个节点都有一个温度。从第 $1$ 天早晨开始,每天早晨每个节点的温度都会减少 $1$。第 $0$ 天温度不会减少。每天的下午,如果 $\textit{Pang}$ 当前所在的节点温度为正,且他要前往的相邻节点温度不小于 $0$,他可以移动到一个相邻节点。每天的晚上,如果当前节点的温度大于等于 $0$,$\textit{Pang}$ 可以施放魔法,使他所在节点的温度增加 $k$。 对于每一对相邻节点 $a$ 和 $b$,$\textit{Pang}$ 最多只能从 $a$ 走到 $b$ 一次(从 $b$ 到 $a$ 也最多一次)。他也可以选择不移动,留在当前节点。 $\textit{Pang}$ 想要在每个节点上恰好施放一次魔法。他还希望在出发前尽可能长时间地待在节点 $1$。已知第 $1$ 天早晨之前每个节点的温度,$\textit{Pang}$ 应该在第几天准备离开?如果他在第 $i$ 天准备离开,他可以在这一天施放魔法,并将在第 $i+1$ 天进行第一次移动。如果即使在第 $0$ 天准备离开也无法在每个节点上恰好施放一次魔法,输出 $-1$。

输入格式

第一行包含两个整数 $n$ 和 $k$($2\le n\le 100000, 0\le k\le 1000000000$)。 接下来的 $n-1$ 行,每行包含两个整数 $x$ 和 $y$,表示节点 $x$ 和 $y$ 之间有一条边($1\le x, y\le n$)。 第 $n+1$ 行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$,表示第 $i$ 个节点在第 $1$ 天早晨之前的温度($0\le a_i\le 1000000000$)。 保证输入是一棵树结构。

输出格式

如果无法在每个节点上恰好施放一次魔法,输出 $-1$。 否则,输出一个整数 $x$,表示他必须在第 $x$ 天从节点 $1$ 准备出发。第 $1$ 天是第 $0$ 天之后的一天,依此类推。

说明/提示

由 ChatGPT 4.1 翻译