P1079盈盈一水间town

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签树形动态规划 · 构造

【题目背景】

路标台恢复后,车队得以穿过通向铜炉山的内陆河谷。河谷中的古镇被支路与水道分隔,Ehundategh 决定在离开前完成一次不重复经过任何古镇的巡查。

【题目描述】

河谷中共有 nn 个古镇,依次编号为 1n1\sim n。古镇之间有 n1n-1 条双向道路,并且任意两个古镇之间都可以通过这些道路互相到达。第 ii 条道路连接古镇 ui,viu_i,v_i,经过这条道路需要 wiw_i 个单位时间。

Gioush 大队最初位于河谷入口的 11 号古镇。以古镇 11 为根,可以将这些古镇与道路看作一棵有根树。若一个古镇在这棵树中没有儿子,则称它为下游古镇

每个下游古镇旁都设有通向水道的渡口。当 Gioush 大队抵达任意一个下游古镇时,可以乘船直接前往任意另一个下游古镇。水路不经过其他古镇,并且本题只统计道路上的巡查时间,因此一次水路转移的时间记为 00

Ehundategh 希望从古镇 11 出发,经过其余每个古镇恰好一次,最后回到古镇 11。在回到古镇 11 之前,巡查过程中不能再次经过古镇 11

道路越长,能够留下的巡查记录越多。请你求出所有合法巡查中经过道路的时间总和的最大值。若不存在合法巡查,输出 Pity!

形式化题意:在一棵以 11 为根的带权树中,为任意两个叶子补充一条权值为 00 的边,求一条从 11 出发并回到 11、恰好经过每个非根结点一次的闭合路径的最大权值,或判断这样的路径不存在。

【输入格式】

从文件 town.in\textbf{\textit{town.in}} 中读入数据。

本题包含多组测试数据。

输入的第一行包含一个非负整数 cc 与一个正整数 TT,分别表示测试点编号与测试数据的组数。c=0c=0 表示该测试点为样例。

对于每组测试数据:

第一行包含一个正整数 nn,表示古镇数量。

接下来 n1n-1 行,第 ii 行包含三个整数 ui,vi,wiu_i,v_i,w_i,表示第 ii 条道路连接的两个古镇以及经过这条道路所需的时间。

【输出格式】

输出到文件 town.out\textbf{\textit{town.out}} 中。

对于每组测试数据输出一行。若存在合法巡查,输出能够得到的最大时间总和。若不存在,输出 Pity!

【样例 1 输入】

0 291 2 11 3 11 4 11 5 12 6 13 7 14 8 15 9 151 3 21 4 51 2 32 5 6

【样例 1 输出】

Pity!14

【说明/提示】

【样例 1 解释】

第一组测试数据不存在合法巡查。

第二组测试数据中,可以依次经过古镇 1,4,3,5,2,11,4,3,5,2,1。其中从古镇 44 到古镇 33、从古镇 33 到古镇 55 均通过水路转移,经过道路的时间总和为 5+6+3=145+6+3=14。可以证明不存在时间总和更大的合法巡查。

【数据范围】

对于 100%100\% 的数据,保证 1T51\leq T\leq 53n2×1053\leq n\leq 2\times 10^51ui,vin1\leq u_i,v_i\leq n0wi0\leq w_iwi109\sum w_i\leq 10^9。对于同一个测试点,保证 n2×105\sum n\leq 2\times 10^5

测试点编号nnwi\sum w_i特殊性质
141\sim 415\leq 15109\leq 10^9
585\sim 8103\leq 10^3=0=0
9169\sim 16103\leq 10^3109\leq 10^9
171917\sim 192×105\leq 2\times 10^5=0=0
202520\sim 252×105\leq 2\times 10^5109\leq 10^9

特殊性质:保证所有道路的权值均为 00

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解