小 G 同学是一名星际飞行爱好者。他所在的联邦星域中共有 n 个城市站点,这些站点之间通过 m 条双向超空间航路相连。
每条航路 i 连接城市 u_i 与 v_i,并且在接下来的 t 天内,每天这条航路的往返飞行价格分别为 w_{i,1}, w_{i,2}, ..., w_{i,t}(在同一天的两个方向价格相同)。
为了完成自己的星际旅行计划,小 G 必须在接下来的 t 天里——每天恰好乘坐一次飞船。
已知:
-
第一天出发时,小 G 位于城市 1;
-
在第 j 天,他必须从第 j-1 天降落的城市出发;
-
他每天必须选择一条与当前所在城市相连的航路进行飞行。
宇航署对连续两天的行程有特别规定(关于中间过夜的住宿费):
假设第 j 天的行程是 A -> B,第 j+1 天的行程是 B -> C。
-
若 A != C(即不是原路返回),小 G 可以在城市 B 免费入住一晚(费用为 0);
-
若 A == C(即第二天走了第一天航线的反向航程),则必须在城市 B 支付一晚住宿费用 c_B。
注意:旅行的最后一天(第 t 天)结束后,无需再支付住宿费用。
现给定所有航路、未来 t 天每天的航班票价,以及每个城市站点的住宿费用,你需要帮助小 G 规划一条“每天飞一次”的完整航线,使得总花费最小。
总花费包括:
-
t 天的全部机票价格;
-
中间 t-1 个夜晚所需的住宿费用(依据上述规则计算)。