#P9377. [THUPC 2023 决赛] 百合

    ID: 10540 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 显示难度提高+/省选− 上传者: 标签>2023O2优化最短路THUPC

[THUPC 2023 决赛] 百合

背景

葡萄藤上开不出百合花。

题目描述

你落在一个巨大的葡萄架上,上面一共有 2k2^k 朵百合花和 mm 条葡萄藤。其中,百合花编号为 00 到 2k−12^k-1 的整数,第 ii 条葡萄藤连接了编号为 xi,yix_i, y_i 的百合花。

你可以花费 cic_i 的时间通过第 ii 条葡萄藤,也就是从 xix_i 走到 yiy_i,或者反过来;还可以花费 aka_k 的时间从 xx 闪现到 yy,其中 x,yx, y 是任意两朵百合花,kk 是它们在二进制表示下不同的比特数。例如,33 的二进制表示是 011011,55 的二进制表示是 101101,它们有两位不同,因此从 33 闪现到 55 花费的时间是 a2a_2。

假设你恰好落在编号为 ss 的百合花上,求从 ss 出发到每一朵百合花所需要的最短时间。

输入格式

第一行包含三个正整数 k,m,sk,m,s,其含义如题目描述。

第二行包含 kk 个非负整数 aia_i,表示通道花费的时间。

第 33 至第 (m+2)(m+2) 行每行三个非负整数 xi,yi,cix_i,y_i,c_i。

输出格式

输出一行 2k2^k 个数 DiD_i(0≤i≤2k−10 \leq i \leq 2^k-1),空格隔开,其中 DiD_i 表示从 ss 到 ii 的最短时间。

3 6 2
17 14 11 
0 2 3
4 2 9
2 2 1
2 2 6
7 0 5
4 2 9

3 14 0 17 9 11 17 8

提示

【数据范围】

对于所有测试数据,1≤k≤171 \le k \leq 17,1≤m≤2×1051 \le m \leq 2 \times 10^5,0≤s,xi,yi≤2k−10 \leq s,x_i,y_i \leq 2^k - 1,0≤ai,ci≤230−10 \le a_i, c_i \leq 2^{30} - 1。

【题目来源】

来自 2023 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2023)决赛。

题解等资源可在 https://github.com/THUSAAC/THUPC2023 查看。