时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
阿宁打算下次放假去游玩。一共有

个城市, 阿宁住在

号城市,去到

号城市游玩。
城市有两种属性,一种是炎热,另一种是酷寒,每个城市是其中一种。从一个城市前往另一个城市,如果要前往的城市和当前城市的属性相同,则需要

时间,否则需要

时间。
阿宁可以使用倒转膜法,该膜法可以使所有城市(除了阿宁当前所在的城市)的属性变化(炎热变酷寒,酷寒变炎热),花费

时间。倒转膜法可以使用任意次。
阿宁想尽快去到

号城市游玩,她想知道她最少需要多少时间到达目的地?
输入描述:
第一行输入两个正整数
,表示一共有
个城市,
条道路。
第二行输入三个正整数
,表示不同动作花费的时间。
第三行输入
个正整数
,表示第
城市的属性,
表示炎热,
表示酷寒。
接下来

行,每行输入两个正整数

,表示

号城市和

号城市有道路相连。
保证

号城市能到达

号城市。




输出描述:
一个整数,表示阿宁从
号城市到达
号城市所需要的最少时间。
示例1
输入
复制
5 6
1 3 9
1 0 0 1 1
1 2
1 3
2 3
2 4
3 4
4 5
说明
路径 1->3->4->5,花费时间为 3+3+1=7。
示例2
输入
复制
3 3
1 10 2
0 1 1
1 2
1 3
2 3
说明
在
号城市使用一次倒转膜法,路径 1->3,花费时间为 2+1=3。