#L2553. 「CTSC2018」暴力写挂
「CTSC2018」暴力写挂
#2553. 「CTSC2018」暴力写挂
题目描述
temporaryDO 是一个很菜的 OIer 。在 4 月,他在省队选拔赛的考场上见到了《林克卡特树》一题,其中 的部分分是求树 上的最长链。可怜的 temporaryDO 并不会做这道题,他在考场上抓猫耳挠猫腮都想不出一点思路。
这时,善良的板板出现在了空中,他的身上发出璀璨却柔和的光芒,荡漾在考场上。“题目并不难。” 板板说。那充满磁性的声音,让 temporaryDO 全身充满了力量。 他决定:写一个枚举点对求 LCA 算距离的 的 的部分分程序!于是, temporaryDO 选择以 为根,建立了求 LCA 的树链剖分结构,然后写了二重 for 循环枚举点对。
然而,菜菜的 temporaryDO 不小心开小了数组,于是数组越界到了一片神秘的内存区域。但恰好的是,那片内存区域存储的区域恰好是另一棵树 。这样一来,程序并没有 RE ,但他求 和 的距离的时候,计算的是:
$$depth(x) + depth(y) - (depth(LCA(x , y)) + depth' (LCA' (x, y))) $$最后程序会输出每一对点对 的如上定义的“距离”的最大值。
temporaryDO 的程序在评测时光荣地爆零了。但他并不服气,他决定花好几天把自己的程序跑出来。请你根据 和 帮帮可怜的 temporaryDO 求出他程序的输出。
输入格式
第一行包含一个整数 ,表示树上的节点个数; 第 到第 行,每行三个整数 ,表示 中存在一条从 到 的边,其长度为 ; 第 到第 行 ,每行三个整数 ,表示 中存在一条从 到 的边,其长度为 。
输出格式
输出一行一个整数,表示 temporaryDO 的程序的输出。
样例
输入
6
1 2 2
1 3 0
2 4 1
2 5 -7
3 6 0
1 2 -1
2 3 -1
2 5 3
2 6 -2
3 4 8
输出
5
样例解释 点对 的距离计算为 。
数据范围与提示
对于所有数据, 。 详细数据范围见下表,表格中的“无” 表示无特殊限制。
| 测试点编号 | 是一条链 | 是一条链 | ||
|---|---|---|---|---|
| 1 | 否 | |||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | 无 | |||
| 7 | ||||
| 8 | ||||
| 9 | ||||
| 10 | 是 | 是 | ||
| 11 | 无 | |||
| 12~13 | 否 | |||
| 14 | 无 | |||
| 15~16 | 否 | 是 | ||
| 17 | 无 | |||
| 18~20 | 否 | |||
和 分别表示树 、 中点 到点 的距离,这里规定,距离指的是经过的边的边权总和,其中 。 和 分别表示树 、 中点 与点 的最近公共祖先,即在从 到 的最短路径上的距离根经过边数最少的点。