QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 1024 MB Total points: 100

#2776. 管流之子

Statistics

兩年前,你協助在家鄉安裝了全國首個 Flubber 管道網路,大獲成功。民意調查顯示,大家都喜歡在自家廚房擁有 Flubber 分配器,如今有幾位富有開拓精神的市民發現了它的一項用途。原來 Flubber 與水混合後可以協助滅火!這項發現十分及時,因為最近失控火災竟然異常頻繁。

家鄉的市議會希望利用 Flubber 的這項特性,在位於中央的站點製造 Flubber 與水的混合物。這個站點稱為 Flubber Department(FD),也會配備受過專業訓練的員工,前往火災現場並用處理過的 Flubber 控制火勢。

管道已經遍布全城。給定管道的配置,你必須決定如何將 Flubber 工廠的 Flubber 和當地水源的水經管道送至 FD。

注意,Flubber 和水將流經同一個管道網路,甚至可能流經同一條管道。所有管道都是雙向的,但 Flubber 和水不能在同一條管道中沿相反方向流動。此外,若兩種液體沿同一方向通過同一條管道,它們必然會混合。因此,網路中的節點配備了特殊薄膜與濾器,讓你可以依照需要分離並重新組合所有流入的混合物。此網路是封閉系統,因此,除了某種液體的源頭與終點(FD)之外,該液體流入每個節點的總流率必須等於流出的總流率。

每條管道有一定的容量。Flubber 流動較慢,具有黏度值 $v$,因此每秒可輸送 $v$ 公升水的管道,每秒只能輸送 $1$ 公升 Flubber。對兩者的混合物,管道容量按線性關係計算。確切地說,若 $c$ 表示管道輸水容量,$f$ 與 $w$ 分別為通過管道的 Flubber 和水的流率(皆以公升/秒計),則容量限制為 $v \cdot f + w \le c$。

你最關心的是送達 FD 的混合物比例。你希望總液體量盡可能多,但也需要足夠的水——因為未稀釋的 Flubber 非常易燃——以及足夠的 Flubber——畢竟沒有 Flubber 就不太像「Flubber Department」了!你提出了一個衡量最終混合物「價值」的公式:$F^a \cdot W^{1-a}$,其中 $F$ 為流入的 Flubber 流率,$W$ 為流入的水的流率,單位都是公升/秒,而 $a$ 是給定的介於 $0$ 與 $1$ 之間的常數。

求出可以達到的 $F^a \cdot W^{1-a}$ 最大值,以及為達成此值應如何輸送 Flubber 和水。

輸入格式

輸入第一行包含地點數 $n$($3 \le n \le 200$)、管道數 $p$($n-1 \le p \le \frac12 n(n-1)$),以及實數 $v$($1 \le v \le 10$)和 $a$($0.01 \le a \le 0.99$)。地點編號為 $1$ 到 $n$;$1$ 是 Flubber 工廠,$2$ 是水源,$3$ 是 FD。實數的小數點後最多有 $10$ 位。

接下來 $p$ 行各描述一條管道。每行包含兩個整數 $j$ 與 $k$($1 \le j < k \le n$),表示管道連接的地點,以及整數 $c$($1 \le c \le 10$),表示管道的輸水容量,單位為公升/秒。

任意兩個地點之間不會有多條管道。此外,保證網路連通。

輸出格式

首先,對每條管道按輸入順序輸出兩個值:通過該管道的 Flubber 流率和水的流率(若液體從 $k$ 流向 $j$,則為負數),使 $F^a \cdot W^{1-a}$ 最大化。然後輸出該最大值,絕對誤差不超過 $10^{-4}$。

若有多個解,任意一個都會被接受。所有限制(Flubber 和水不在同一管道中反向流動、流量守恆、管道容量,以及構造的解與其宣稱價值的一致性)都必須在 $10^{-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

輸出格式 1

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

輸出格式 2

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

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.