#C. 比特跳跃 (jump)

    Type: Default File IO: jump 1000ms 256MiB

比特跳跃 (jump)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

比特国由 NN 个城市构成,编号为 1,2,,N1,2,\dots,N

MM 条双向道路连接这些城市,第 ii 条连通城市 UiU_i 和城市 ViV_i,通过这条道路需要花费 WiW_i 的时间。

此外,比特国的人们还可以使用“比特跳跃“来通行于任意两个城市之间。比特跳跃所需的时间取决于两个常数,SSKK,两者均为整数。对于从城市 xx 跳跃到城市 yy

  • S=1S=1:传送需要K×(x&y)K \times (x \& y)单位时间(&\&表示按位与(bitwise AND))。
  • S=2S=2:传送需要K×(xy)K \times (x \oplus y)单位时间(\oplus表示按位异或(bitwise XOR))。
  • S=3S=3:传送需要K×(xy)K \times (x|y)单位时间(|表示按位或(bitwise OR))。

请你计算从 1 号城市移动到每个城市所需的最短时间。

输入格式

jump.in 文件读入数据。

第一行四个整数:N,M,S,KN, M, S, K

接下来的 MM 行中,第 ii 行包含三个整数:Ui,Vi,WiU_i, V_i, W_i,描述第 ii 条双向道路。

输出格式

输出到 jump.out 文件。

输出一行 N1N - 1 个整数,其中第 ii 个整数是从 11 号城市旅行到 i+1i + 1 号城市所需的最短时间。

样例

5 3 2 10
1 3 10
2 3 100
4 5 5
20 10 45 40
5 3 3 10
1 3 10
2 3 100
4 5 5
30 10 50 50
2 0 1 1
0

大样例

点击链接 ex_jump4.inex_jump4.out 下载大样例 4 的输入数据和输出数据。

点击链接 ex_jump5.inex_jump5.out 下载大样例 5 的输入数据和输出数据。

点击链接 ex_jump6.inex_jump6.out 下载大样例 6 的输入数据和输出数据。

数据范围

对于所有测试数据,

2N1052 \leq N \leq 10^5

0M1050 \leq M \leq 10^5

1S31 \leq S \leq 3

0K1060 \leq K \leq 10^6

对于所有 1iM1 \leq i \leq M1Ui,ViN1 \leq U_i, V_i \leq N

对于所有 1iM1 \leq i \leq MUiViU_i \neq V_i

对于所有 1iM1 \leq i \leq M0Wi1090 \leq W_i \leq 10^9

子任务 分数 附加约束条件
11 1919 N,M800N, M \leq 800
22 99 S=1S = 1, NN 是 2 的整数次幂
33 1111 S=1S = 1
44 3030 S=2S = 2
55 3131 S=3S = 3

1017提高

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2024-10-17 14:00
End at
2024-10-17 18:00
Duration
4 hour(s)
Host
Partic.
15