#P11238. [KTSC 2024 R1] 铁路 2

    ID: 12608 远端评测题 2000ms 1000MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>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 个城市和连接这些城市的 N−1N-1 条双向铁路,任意两个不同的城市都可以通过铁路互相到达。也就是说,IOI 国的铁路网络是一个树结构。城市编号从 00 到 N−1N-1,铁路编号从 00 到 N−2N-2。对于每条编号为 ii 的铁路,它连接了编号为 U[i]U[i] 和 V[i]V[i] 的城市,长度为 W[i]W[i]。

在 IOI 国的任何一个城市出发,都可以乘坐直达列车直接到达另一个城市。也就是说,对于所有 u,vu,v (0≤u,v≤N−1,u≠v)(0 \leq u, v \leq N-1, u \neq v) 的 N(N−1)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 城市。

你需要编写一个程序,计算满足 0≤x,y≤N−1,x≠y0 \leq x, y \leq N-1, x \neq y 的所有 N(N−1)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:大小为 N−1N-1 的整数数组。对于每个 ii (0≤i≤N−2)(0 \leq i \leq N-2),存在一条连接 U[i]U[i] 和 V[i]V[i] 的长度为 W[i]W[i] 的铁路。
  • 该函数需要返回满足 0≤x,y≤N−1,x≠y0 \leq x, y \leq N-1, x \neq y 的所有 N(N−1)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 (0≤i≤N−2)(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

提示

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

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

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

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