A85327.「THUPC 2023」百合
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:512MB
题目描述
你落在一个巨大的葡萄架上,上面一共有 2k 朵百合花和 m 条葡萄藤。其中,百合花编号为 0 到 2k−1 的整数,第 i 条葡萄藤连接了编号为 xi,yi 的百合花。
你可以花费 ci 的时间通过第 i 条葡萄藤,也就是从 xi 走到 yi,或者反过来;还可以花费 ak 的时间从 x 闪现到 y,其中 x,y 是任意两朵百合花,k 是它们在二进制表示下不同的比特数。例如,3 的二进制表示是 011,5 的二进制表示是 101,它们有两位不同,因此从 3 闪现到 5 花费的时间是 a2。
假设你恰好落在编号为 s 的百合花上,求从 s 出发到每一朵百合花所需要的最短时间。
输入格式
第一行包含三个正整数 k,m,s,其含义如题目描述。
第二行包含 k 个非负整数 ai(1≤i≤k),其含义如题目描述。
第 3 至第 (m+2) 行每行三个非负整数 xi,yi,ci(1≤i≤m),其含义如题目描述。
输出格式
输出一行 2k 个数 Di(0≤i≤2k−1),空格隔开,其中 Di 表示从 s 到 i 的最短时间。
输入输出样例
输入#1
3 6 2 17 14 11 0 2 3 4 2 9 2 2 1 2 2 6 7 0 5 4 2 9
输出#1
3 14 0 17 9 11 17 8
说明/提示
保证 k≤17,m≤2×105,0≤s,xi,yi≤2k−1,0≤ai,ci≤230−1。