P1907 设计道路

题目背景

Caesar 远征高卢回来后,对你大加赞赏,他亲自来到 Genoa 视察。 Genoa 在你的建设下变得无比繁荣,由于财政收入的增加,你为城市修建了交通系统。古罗马的交通系统由两部分组成——Dirt Road 和 Rome Road。两个路口间只可能是其中一种道路。在 Rome Road 上可以驾驶马车,而在 Dirt Road 上则不行。由于修建道路是一项浩大的工程,使得你无法将整个城市用 Rome Road 连接起来。 现在 Caesar 已经到达码头,他要求去你家参观。Caesar 有一个癖好,喜欢坐车而不喜欢走路。所以 Caesar 走 Dirt Road 时的不满值要比走 Rome Road 时大。 为了不让 Caesar 过于不满而罢免你的职位,请设计路线使得 Caesar 的不满值最小。

题目描述

给定一张二维平面上 $n+2$ 个结点的无向完全图(也就是说,每两个点之间都有一条边),其中 $i$ 号点的坐标为 $A_i(x_i,y_i)$。 无向图中有两种边,一种叫 Rome Road,一种叫 Dirt Road。 记所有 Rome Road 的集合为 $S$,$l(X,Y)$ 表是线段 $XY$ 的长度,则一条边 $(A_i,A_j)$ 的边权为: $$c(A_i,A_j)=\begin{cases}d_R \cdot l(A_i,A_j),&(A_i,A_j) \in S\\d_D \cdot l(A_i,A_j),&(A_i,A_j) \notin S\end{cases}$$ 即该边的长度与对应系数(Rome Road 为 $d_R$,Dirt Road 为 $d_D$)的乘积。 保证所有与 $n+1$ 号结点和 $n+2$ 号结点相连的所有边都是 Dirt Road。 现在,你需要求出 $n+1$ 号结点和 $n+2$ 号结点之间的最短路。

输入格式

第一行两个小数 $d_D,d_R$。 第二行一个正整数 $n$。 下面 $n$ 行,第 $i$ 行两个小数 $x_i,y_i$。 下面若干行(以 `0 0` 为结束标志),每行两个正整数 $u,v$,表示边 $(u,v)$ 是 Rome Road。 下面一行两个小数 $x_{n+1},y_{n+1}$。 最后一行两个小数 $x_{n+2},y_{n+2}$。

输出格式

求出 $n+1$ 号结点和 $n+2$ 号结点之间的最短路,答案保留 $4$ 位小数。

说明/提示

对于 $100\%$ 的数据: - $0.1 \le d_R < d_D \le 10^3$ - $0 \le p(d_D),p(d_R) \le 1$ - $1 \le n \le 10^3$ - $0 \le x_i,y_i \le 10^4$ - $0 \le p(x_i),p(y_i) \le 2$ - Rome Road 不超过 $200$ 条 - $1 \le u,v \le n$(结束标志除外) - $u \ne v$ 其中 $p(X)$ 表示小数 $X$ 的小数位数。