#P9972. [THUPC 2024 初赛] 勇闯末日塔

[THUPC 2024 初赛] 勇闯末日塔

题目背景

安宁顷刻今将逝,末日黑云伺隙来。宿命无情何所惧?越其止境冀花开。

为了执行毁灭世界的疯狂计划,一位占用了已死之人躯壳的神秘男子在这颗蓝色的星球上创造出了无数末日塔。这些末日塔会散发出浓密的以太射线,对末日塔附近的几乎所有生物进行精神控制,只有受到特殊加护的人才能免受以太射线控制。

一些受到加护的义勇队对这些末日塔进行了调查,其结果显示:这些末日塔组成了复杂的以太传输网络,持续不断地从大地中吸收以太,并将以太传输到位于帝国的中枢塔。

一队持有特殊加护的英雄决定闯入其中一些末日塔,以期彻底调查并尝试破坏这些末日塔。英雄们破坏掉进入的末日塔后,以太传输网络就会受到影响,因此大家希望选择一些末日塔,将其破坏后能使得网络的最大传输容量降到最低。

作为勇闯末日塔小队的先锋,你再次阅读了小队目前所掌握的所有信息。这次大胆的行动计划最终能否拯救这个世界,眼下恐怕谁都无法事先料定。但为了这颗星球的未来,我们只能放手一搏。

题目描述

星球的表面是一个中心位于 (0,0,0)(0, 0, 0),半径为 RR 的完美球面。星球表面上共有 NN 座末日塔,这些令人毛骨悚然的塔构成了以太传输网络的所有节点。

  • 末日塔的高度远小于星球半径,因此我们认为第 i(1iN)i (1 \le i \le N) 座塔是球面上的一个点 (xi,yi,zi)\left(x_i, y_i, z_i\right)。第 ii 座塔的以太传输效率为 qiq_i
  • 保证 NN 座末日塔的位置两两不同。在这 NN 座末日塔中,ss 号塔是以太吸收点,tt 号塔是位于帝国的中枢塔;这两座塔的以太浓度显著高于其它的末日塔,因此只能闯入这两座塔之外的末日塔。

NN 座末日塔之间共有 MM 条传输通道。第 j(1jM)j (1 \le j \le M) 条传输通道连接 uj,vju_j, v_j 两座末日塔,让它们可以互相传输以太。

  • 传输通道是双向的,但单位时间内以太的流向必须是单向的。
  • 为了节省不必要的成本,传输通道的两端不会连接相同的塔,也不会有两条传输通道连接相同的末日塔对。
  • 为了降低传输距离,第 ii 条传输通道沿着 uju_jvjv_j 所在的大圆的劣弧铺设,故其长度 rjr_j 为两座末日塔在星球表面的球面距离。为了避免传输通道的互相干扰,对于任意一条传输通道所对应的劣弧,其他传输通道所对应的劣弧只会在该劣弧的两端点上与该劣弧相交。保证由同一条传输通道相连的两座末日塔的位置不是对跖点关系。
    • 如果不知道大圆、劣弧、球面距离和对跖点是什么,可以参考题面最后的提示部分。

受到传输效率和通道长度的影响,每条传输通道有各自传输以太的容量上限。

  • 具体而言,每个单位时间内,第 jj 条传输通道的容量上限Kqujqvjrj2\frac{Kq_{u_j} q_{v_j}}{r_j^2},其中 KK 是给定的常数,quj,qvjq_{u_j}, q_{v_j} 为该传输通道两端的塔的传输效率,rjr_j 为这条传输通道的长度。

整张以太传输网络需要将 ss 号塔吸收的以太沿着传输通道传输到 tt 号塔,并使得单位时间内的以太传输量最大。为此,传输网络会自动确定一个以太传输方案,在满足所有传输通道容量上限的前提下,最大化这一传输量。

  • 换句话说,如果将末日塔看作图上的点,传输通道看作边,而传输通道的容量上限对应每条边的容量,那么以太的传输方案应该恰好为 sstt 的最大流。

虽然没有任何人能保证闯入末日塔之后就一定能将其破坏,但作为勇闯末日塔小队的先锋,你还是想在出发之前计算一下,如果成功破坏了所有将要闯入的末日塔,传输网络单位时间的最大传输量将会降至多少。

  • 如果成功破坏了选择的末日塔,与其相连的所有传输通道的容量都将降至 00,其余传输通道容量不发生变化;此时传输网络会自动调节至一个在新的网络中传输量最大的新方案。
  • 在最理想的情况下,小队将有机会调查并破坏 LL 座末日塔。因此,需要事先选择 LL 座末日塔(均不能是 sstt),使得当这 LL 座末日塔都被成功破坏时,传输网络的新的传输方案的以太传输量尽可能地小。

输入格式

输入的第一行包括五个正整数 N,M,L,s,tN, M, L, s, t3N5003\le N\le 5002MN(N1)22\le M\le \frac{N(N-1)}{2}1Lmin{8,N2}1\le L\le \min\{8,N-2\}1s,tN1\le s, t\le N),分别表示该传输网络包含的末日塔数量,传输通道数量,有机会闯入的末日塔数量,最主要的以太吸收塔的编号和中枢塔的编号。

输入的第二行包括两个实数 R,KR, K1R1031\le R\le 10^31K1031\le K\le 10^3),分别表示星球的半径和计算以太容量时用到的常数。

接下来 NN 行,每行三个实数 ai,bi,qia_i, b_i, q_i0ai10\le a_i\le 10bi<20\le b_i< 21qi1031\le q_i \le 10^3),描述第 ii 座末日塔的信息,其中 qiq_i 表示第 ii 座末日塔的传输能力, aia_ibib_i 共同描述末日塔的位置:令 θi=πai\theta_i = \pi a_iφi=πbi\varphi_i = \pi b_i(如果你习惯使用角度制而不是弧度制,可以将 π\pi 改为 180180^\circ),则 $\left(x_i, y_i, z_i\right) = \left(R \sin\theta_i \cos\varphi_i, R\sin\theta_i \sin\varphi_i, R\cos\theta_i\right)$。保证末日塔的位置各不相同。

最后 MM 行,每行两个正整数 ui,viu_i, v_i1ui,viN1\le u_i, v_i\le N),表示一条传输通道连接的两座末日塔的编号。保证同一条传输通道连接的两座末日塔不相同且不互为对跖点,没有两条传输通道连接的是相同的末日塔对,且传输网络是连通的。

保证输入的所有实数保留到小数点后第 44 位。

输出格式

输出一个实数,表示如果成功破坏了将要闯入的末日塔,新的传输网络单位时间的最大传输量。当你的输出与标准输出的相对误差或绝对误差不超过 10610^{-6} 时,我们认为你的输出是正确的。

6 11 1 1 6
1.0000 1.0000
1.0000 0.0000 10.0000
0.7500 0.2500 6.0000
0.5000 0.0000 1.0000
0.5000 0.5000 1.0000
0.2500 0.2500 6.0000
0.0000 0.0000 10.0000
1 2
1 3
1 4
2 3
2 4
3 4
3 5
3 6
4 5
4 6
5 6

8.105694691387022

提示

样例 #1 解释

以太传输网络如下图所示。图中蓝色球面即为星球表面;紫色点为各末日塔,其中 PiP_i 对应输入的第 ii 座末日塔;黄色的线表示各传输通道。

样例 1 示意图

原来的传输网络单位时间最大传输量为 188/π2188/\pi^2。破坏第 22 个末日塔或第 55 个末日塔都能使新的传输网络单位时间的最大传输量降至 80/π280/\pi^2,而破坏第 33 个末日塔或第 44 个末日塔只能使新的传输网络单位时间的最大传输量降至 94/π294/\pi^2,所以应该选择第 22 个或第 55 个末日塔尝试破坏。