#loj6479. 「ICPC World Finals 2017」小小水管工 Son of Pipe Stream

「ICPC World Finals 2017」小小水管工 Son of Pipe Stream

[AdditionalFile6479.zip](file://AdditionalFile6479.zip?type=additional_file)

#6479. 「ICPC World Finals 2017」小小水管工 Son of Pipe Stream

标签: 传统 | 时间限制: 5000 ms | 内存限制: 1024 MiB |

题目描述

两年前,你在你的家乡协助安装了全国第一个 Flubber 管道网络并取得了巨大的成功。民意调查显示,每个人都喜欢在自己的厨房里安装他们自己的 Flubber 分配器(类似水龙头),现在有一些活跃的公民还发现了另一个用途。显然 Flubber 与水混合后有助于扑灭火灾!这是一个非常及时的发现,因为最近失控的火灾真是意外地常见。

你家乡的城市委员会希望在中心车站生产 Flubber 和水的混合物来充分利用 Flubber 的这个特性。这个被称为 Flubber Department(简称 FD)的车站也将配备训练有素的专业人员,他们负责前往火灾场所并利用加工过的 Flubber 来控制火情。

管道已经安置在整个城市之中。你需要通过管道的布局确定如何安排从 Flubber 工厂运送到 FD 的 Flubber 以及从当地水源到 FD 的水。

注意 Flubber 和水会流经相同的管道网络,甚至是同一个管道。所有管道都是双向的,但是 Flubber 和水不能在相同的管道中以相反的方向运输。此外,如果两种液体在相同的管道以相同的方向输送,它们将不可避免地混合。因此网络中的每个节点都配备了特殊的膜与过滤器,你可以根据自己的需要来分离和重组所有流进的混合物。网络是一个封闭的系统,所以除了来源地和目的地(FD)之外,流入每个节点的总流速必须等于流出的总流速。

每个管道都有固定的容量。 Flubber 稍微粘稠一些,它具有粘度值 vv ,这意味着可以运输 vv 升/秒的水的管道只能运输 11 升/秒的 Flubber 。而管道的容量对于两者的混合物是呈线性分布的。准确来说,如果用 cc 表示管道相对水的容量限制,ffww 表示流经管道的 Flubber 和水的速率(均以升/秒计算),则容量约束满足不等式 vf+wcv \cdot f + w \leq c

你主要关心的是制衡到达 FD 的混合物。你希望液体总量尽可能多,但你也需要足够的水来稀释 Flubber(因为未稀释时 Flubber 高度易燃),并且需要足够的 Flubber(毕竟是 Flubber Department)!你已经想出了一个公式来衡量最终混合物的“价值”:FaW1aF^a \cdot W^{1 - a},其中 FF 是流入 Flubber 的速率,单位为升/秒,WW 是流入水的速率,单位为升/秒,aa 是给定的 0011 之间的常数。

请你确定可以得到的 FaW1aF^a \cdot W^{1 - a} 最大值,以及如何安排 Flubber 和水来实现这个最大值。

输入格式

第一行包含地点的数量 nn (3n200)(3 \leq n \leq 200),管道的数量 pp (n1p12n(n1))(n - 1 \leq p \leq \frac{1}{2}n(n-1)),实数值 vv (1v10)(1 \leq v \leq 10)aa (0.01a0.99)(0.01 \leq a \leq 0.99)。地点从 11nn 标号, Flubber 工厂是 11,水源是 22,FD 是 33。实数值在小数点后最多有 1010 位数字。

接下来 pp 行,每行描述一条管道。每行包含两个整数 jjkk (1j<kn)(1 \leq j < k \leq n),对应管道连接的两个地点,以及一个整数 cc (1c10)(1 \leq c \leq 10),对应管道的容量(单位:升/秒)。

没有两条管道连接相同的两个位置。此外,保证管道网络是连通的。

输出格式

首先,对于每条管道(按输入的顺序),输出两个值:Flubber 在其中的流速和水在其中的流速(如果是从 kk 流到 jj ,则用负数表示),使得 FaW1aF^a \cdot W^{1 - a} 最大。然后,输出这个最大值,精确到绝对误差不超过 10410^{-4}

如果存在多个解,那么任意一个解都是可接受的。所有的限制(不能在同一管道中以不同的方向输送 Flubber 和水、流量平衡、管道容量以及构造解与答案的一致性)必须满足绝对误差不超过 10410^{-4}

样例 1

输入

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

输出

0.000000000 1.360000000
0.000000000 1.000000000
0.000000000 -1.000000000
0.000000000 0.360000000
0.880000000 0.000000000
-0.880000000 -0.360000000
1.02037965897

样例 2

输入

5 5 1.0 0.5
1 2 10
2 3 10
3 4 10
4 5 10
3 5 10

输出

5 0
5 5
4.2 3.14159
4.2 3.14159
-4.2 -3.14159
5