QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 512 MB 満点: 100

#4877. 长沙马拉松

統計

长沙是一座被山水环绕的美丽城市,风景迷人。长沙有许多旅游景点:岳麓书院是湖南大学的前身,也是中国四大书院之一,始建于公元 976 年的北宋时期。橘子洲是世界上最长的内河江心洲,位于湘江之中,因毛主席所作的著名诗词《沁园春·长沙》而闻名。马王堆是著名的考古遗址,出土了三具西汉时期的古尸,其中辛追夫人的墓葬保存最为完好,出土了完整的化妆品盒、漆器和精美的丝织品。火宫殿代表了湖湘文化和楚巫文化,以及湖南的地理文化和独特的饮食文化,游客可以在此品尝到地道的湘菜。

每年长沙都会举办马拉松比赛。在规划路线时,组织者希望经过一些旅游景点,以增加趣味性,吸引更多的运动员和观众。长沙可以看作是一个由 $N$ 个交叉路口和许多双向道路组成的图。一条道路连接两个交叉路口 $i$ 和 $j$,长度为 $W_{i,j}$。然而,为了减少对日常交通的影响,当地政府规定只有 $N-1$ 条道路可以用于路线,且这些道路连接了所有 $N$ 个交叉路口。只有一条相邻道路的交叉路口位于湘江西岸,且只有在这些交叉路口才有渡轮。马拉松比赛按惯例从湖南大学的红楼广场(标记为 $S$)出发。组织者不希望路线经过任何道路两次,因此马拉松必须分为两段:第一段和第二段。必须从岸边的交叉路口中选择两个不同的点作为半程终点 $S_1$ 和半程起点 $S_2$。第一段从 $S$ 开始,到 $S_1$ 结束。第二段从 $S_2$ 开始,到 $S$ 结束。组织者将根据政府要求使用渡轮将运动员从 $S_1$ 运送到 $S_2$。

考虑到安全因素,需要在每一段路程的某些交叉路口设置补给点,并且在 $S$、$S_1$ 和 $S_2$ 处必须设置补给点。

根据科学研究,两个相邻补给点之间的最适宜距离为 $L$,组织者希望最小化路线的评估值。对于每一段路程,从起点到休息点 $i$ 的评估值记为 $E_i$,公式如下:

$$E_i = E_j + \left(\sum_{k=j}^{i-1} D_{k,k+1} - L\right)^2$$

其中 $j$ 是路线上前一个补给点,$\sum_{k=j}^{i-1} D_{k,k+1}$ 表示从交叉路口 $j$ 到 $i$ 的路线长度。起点的评估值为零。一段路程的评估值等于从其起点到终点的评估值。

你的任务是选择 $S_1$、$S_2$ 以及补给点,以最小化两段路程的总评估值。

输入格式

输入包含多组测试数据。 对于每组测试数据,第一行包含两个整数 $N, L$ ($1 \le N \le 20000, 1 \le L \le 10^9$)。 接下来的 $N-1$ 行,每行包含 3 个整数 $U, V, W$,表示一条连接交叉路口 $U$ 和 $V$ 的双向道路,长度为 $W$ ($1 \le U, V \le N, 1 \le W \le 10^3$)。 红楼广场($S$)的编号始终为 1。输入以文件结束符(EOF)结束。

输出格式

对于每组数据,输出一行,即最优方案的评估值,保留两位小数。如果无解,输出 -1。

样例

输入格式 1

7 4
1 2 2
1 3 7
1 4 3
2 5 6
2 6 5
3 7 8

输出格式 1

7.00

说明

样例方案:

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.