#P11238. 「KTSC 2024 R1」铁路 2

    ID: 10721 Type: RemoteJudge 2000ms 1000MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>2024交互题树的直径KOI(韩国)

「KTSC 2024 R1」铁路 2

题目背景

请勿用 C++14 (GCC 9) 提交。

你需要在程序开头加入如下代码:

#include<vector>
int travel(std::vector<int> U, std::vector<int> V, std::vector<int> W);

题目描述

题目译自 2024년도 국제정보올림피아드 대표학생 선발고사 - 1차 선발고사 T4 「철도 2

IOI 国有 NN 个城市和连接这些城市的 N1N-1 条双向铁路,任意两个不同的城市都可以通过铁路互相到达。也就是说,IOI 国的铁路网络是一个树结构。城市编号从 00N1N-1,铁路编号从 00N2N-2。对于每条编号为 ii 的铁路,它连接了编号为 U[i]U[i]V[i]V[i] 的城市,长度为 W[i]W[i]

在 IOI 国的任何一个城市出发,都可以乘坐直达列车直接到达另一个城市。也就是说,对于所有 u,vu,v (0u,vN1,uv)(0 \leq u, v \leq N-1, u \neq v)N(N1)N(N-1) 个城市对 (u,v)(u, v),从 uu 城市出发到达 vv 城市的直达列车存在。乘坐这趟直达列车时,直到到达 vv 城市之前不能下车,这趟列车的耗时等于 IOI 国铁路网络中从 uu 城市到 vv 城市的唯一简单路径上所有铁路的长度之和。

作为铁路爱好者,你喜欢长时间乘坐一列火车,享受悠闲的时光。因此,乘坐耗时长的直达列车会让你感到更大的乐趣。

具体来说,对于两个不同的城市 x,yx, y,乐趣 joy(x,y)\operatorname{joy}(x, y) 定义为满足以下条件的最大正整数 DD

  • xx 城市出发,乘坐耗时至少为 DD 的直达列车,经过有限次后到达 yy 城市。

你需要编写一个程序,计算满足 0x,yN1,xy0 \leq x, y \leq N-1, x \neq y 的所有 N(N1)N(N-1) 个城市对 (x,y)(x, y)joy(x,y)\operatorname{joy}(x, y) 之和,并对 1000000007(=109+7)1000000007\left(=10^{9}+7\right) 取模。

你需要实现以下函数:

int travel(std::vector<int> U, std::vector<int> V, std::vector<int> W);
  • 该函数只会被调用一次。
  • U, V, W:大小为 N1N-1 的整数数组。对于每个 ii (0iN2)(0 \leq i \leq N-2),存在一条连接 U[i]U[i]V[i]V[i] 的长度为 W[i]W[i] 的铁路。
  • 该函数需要返回满足 0x,yN1,xy0 \leq x, y \leq N-1, x \neq y 的所有 N(N1)N(N-1) 个城市对 (x,y)(x, y)joy(x,y)\operatorname{joy}(x, y) 之和,并对 1000000007(=109+7)1000000007\left(=10^{9}+7\right) 取模。

注意,提交的代码中不应包含任何输入输出操作。

输入格式

示例评测程序按以下格式读取输入:

  • 11 行:NN
  • 2+i2+i (0iN2)(0 \leq i \leq N-2) 行:U[i]V[i]W[i]U[i]\,V[i]\,W[i]

输出格式

示例评测程序将输出:

  • 11 行:travel 函数返回的值
5
0 1 1
1 2 2 
0 3 3
0 4 2
80
5 
0 1 3 
0 2 2
0 3 2
0 4 1
78
6 
0 1 3 
1 2 1
2 3 4
3 4 1
4 5 5
284

提示

对于所有输入数据,满足:

  • 2N51052 \leq N \leq 5\cdot 10^5
  • IOI 国的铁路网络是一个树结构
  • 对于所有 ii (0iN2)(0 \leq i \leq N-2)0U[i],V[i]N1;U[i]V[i]0 \leq U[i], V[i] \leq N-1 ; U[i] \neq V[i]
  • 对于所有 ii (0iN2)(0 \leq i \leq N-2)1W[i]1091 \leq W[i] \leq 10^9

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 33 N50N \leq 50
22 66 N500N \leq 500
33 1919 N2000N \leq 2000
44 55 N8000N \leq 8000
对于所有 ii (0iN2)(0 \leq i \leq N-2)U[i]=0U[i]=0
55 77 N8000N \leq 8000
对于所有 ii (0iN2)(0 \leq i \leq N-2)U[i]=i,V[i]=i+1U[i]=i, V[i]=i+1
66 1515 N8000N \leq 8000
77 44 对于所有 ii (0iN2)(0 \leq i \leq N-2)U[i]=0U[i]=0
88 1111 对于所有 ii (0iN2)(0 \leq i \leq N-2)U[i]=i;V[i]=i+1U[i]=i ; V[i]=i+1
99 3030 无附加限制