#CCSP2020A. 办签证

办签证

时间限制: 1.0 秒 2.0 秒

空间限制: 512 MB

题目背景

世界那么大,我想去看看。

——顿顿

题目描述

顿顿想欣赏国外美丽风光,所以他计划前往某国领事馆办理签证。请你为顿顿规划符合要求的出行路线。

如图 1 所示,顿顿行动范围可以表示为一张有向图 G=(V,E)G = (V, E)。其中,VV 为城市的集合,EE 为城市间民航航班的集合,城市集合规模 V=n|V|=n,航班集合规模 E=m|E|=m。两个城市间往返方向各最多拥有一个航班,顿顿可以乘飞机从一个城市前往另一个城市。

VV 中包含三种城市:顿顿出发的城市 v0v_0、领事馆所在的城市 U=v1,...,vUVU = {v_1, . . . , v_{|U|}} \subset V (其中 U=s|U|=s)和中转城市 VUv0V − U − {v_0}。不同城市领事馆办理签证开销各不相同。对于领事馆所在城市 vUv \in U,在该城市办理签证所需开销记为 cvisa(v)c_{\text{visa}}(v)

不同航班机票价格各不相同。对于出发城市为 viv_i 到达城市为 vjv_j 的航班 ei,j=(vi,vj)Ee_{i,j} =(v_i, v_j ) ∈ E,其机票价格记为 cair(ei,j)c_{\text{air}}(e_{i,j})。同时,由于航空管制,各航班有不同的延误概率,记为 Pdelay(ei,j)[0,1]P_{\text{delay}}(e_{i,j} ) \in [0, 1]

顿顿想在有限预算 CC 内从其所在城市 v0v_0 出发前往任意一个领事馆所在城市 vxUv_x \in U,完成签证办理并返回 v0v_0。请你为他选择一个办理签证的城市以及一条开销不超过预算、遭遇航班延误概率最小的出行路线。即

$$\min_{p=v_{i_1},...,v_{i_r}} 1-\prod_{\forall 1\le k<r} (1-P_{\text{delay}}(e_{i_k,i_{k+1}})) $$

其中

$$v_{i_1}=v_{i_r}=v_0,\\ \forall 1\le k\le r~:~v_{i_k}\in V,\\ \exist 1 < k < r : v_{i_k} = v_x \in U,\\ \forall 1 ≤ k < r : e_{i_k,i_{k+1}} \in E,\\ c_{\text{visa}}(v_x)+\sum_{1\le r<n}c_{\text{air}}(e_{i_k,i_{k+1}}) \le C. $$

输入格式

从标准输入读入数据。

第一行输入包含四个用空格分隔的正整数,依次为城市个数 nn,包含领事馆的城市个数 ss,航班个数 mm,以及顿顿的预算 CC

随后 ss 行输入依次对应领事馆所在城市 v1,...,vsv_1, . . . , v_{s},每行包含一个正整数,为办理签证所需开销 cvisa(v1),...,cvisa(vs)c_{\text{visa}}(v_1),...,c_{\text{visa}}(v_{s})

随后 mm 行输入每行代表一个航班,每行包含四个用空格分隔的数字,依次为:

  1. 出发城市编号,为自然数,范围为 0,...,n10,...,n-1,分别对应城市 v0,...,vn1v_0,...,v_{n-1}
  2. 到达城市编号,为自然数,范围为 0,...,n10,...,n-1,分别对应城市 v0,...,vn1v_0,...,v_{n-1}
  3. 航班延误概率,为浮点数,范围为 [0,1][0,1]
  4. 航班的机票价格,为正整数。

输出格式

输出到标准输出。

第一行输出顿顿办签证城市的编号,即 xx

第二行输出顿顿的总开销,即 $c_{\text{visa}}(v_x)+\sum\limits_{1\le k<r}c_{\text{air}}(e_{i_k,i_{k+1}})$。

第三行输出顿顿的延误概率,即 $1-\prod\limits_{1\le k<r} (1-P_{\text{delay}}(e_{i_k,i_{k+1}}))$。记答案的延误概率为 aa,而你给出的延误概率为 bb,那么当且仅当 ab<104|a-b|< 10^{-4} 时我们认为你的输出是正确的。

第四行输出顿顿的出行路线,用一个用空格分隔的城市编号序列表示,即 i1 i2 ... iri_1~ i_2 ~...~i_r。注意,xx 应包含于该序列中,并且该序列头尾编号应为 00。当测试点存在多种最优出行路线时,输出任意一条即可。

4 2 5 33
8
10
0 1 0.01 7
0 2 0.1 12
1 2 0.01 8
2 3 0.1 6
3 0 0.1 4
1
33
0.206119
0 1 2 3 0

样例 1 解释

样例输入如图 1 所示,图中从 v0v_0 出发,共有三种可行出行路线:

  • 选择在 v1v_1 办签证,路线为 (v0,v1,v2,v3,v0)(v_0,v_1,v_2,v_3,v_0) ,开销为 3333,遭遇航班延误概率为 0.2061190.206119
  • 选择在 v2v_2 办签证,路线为 (v0,v1,v2,v3,v0)(v_0,v_1,v_2,v_3,v_0) ,开销为 3535,遭遇航班延误概率为 0.2061190.206119
  • 选择在 v2v_2 办签证,路线为 (v0,v2,v3,v0)(v_0,v_2,v_3,v_0) ,开销为 3232,遭遇航班延误概率为 0.2710.271

由于预算为 3333,从而最优方案为选择 v1v_1,出行路线为 (v0,v1,v2,v3,v0)(v_0, v_1, v_2, v_3, v_0)

样例 2

见题目文件区的 2.in2.ans

子任务

对于所有测试数据,保证均为无重边的强连通图,并且保证至少存在一条满足预算限制的路径

本题采用捆绑测试,你只有通过一个子任务中的所有测试点才能得到该子任务的分数。

子任务编号 分值 nn\le mm\le CC\le mCm\cdot C\le 特殊性质
1 30 20002000 2×1052\times 10^5 8080 1.6×1071.6\times 10^7 \checkmark
2 20 200200 50005000 200200 10510^5 ×\times
3 10001000 2×1052\times 10^5 10001000 10710^7
4 30 20002000 8×1058\times 10^5 20002000 10810^8

特殊性质:从 v0v_0 出发前往某地办理签证并返回 v0v_0 的概率最佳路线累计开销均小于或等于 CC,意味着预算限制不产生实际作用