#168. 猫和老鼠
猫和老鼠
猫和老鼠
题目描述
猫和老鼠所在的庄园可以视为一张由 n 个点和 m 条带权无向边构成的连通图。结点依次以 1, 2, ..., n 编号,结点 i 有价值为 c[i] 的奶酪。在 m 条带权无向边中,第 i 条无向边连接结点 u[i] 与结点 v[i],边权 w[i] 表示猫和老鼠通过这条边所需的时间。
猫窝位于结点 a,老鼠洞位于结点 b。对于老鼠而言,结点 x 是安全的当且仅当:老鼠能规划一条从结点 x 出发逃往老鼠洞的路径,使得对于路径上任意结点 y(包括结点 x 与老鼠洞)都有:猫从猫窝出发到结点 y 的最短时间严格大于老鼠从结点 x 沿这条路径前往结点 y 所需的时间。
老鼠在拿取安全结点的奶酪时不存在被猫抓住的可能,但在拿取不是安全结点的奶酪时则不一定。为了确保万无一失,老鼠决定只拿取安全结点放置的奶酪。请你计算老鼠所能拿到的奶酪价值之和。
输入格式
第一行,两个正整数 n、m,分别表示图的结点数与边数。
第二行,两个正整数 a、b,分别表示猫窝的结点编号,以及老鼠洞的结点编号。
第三行,n 个正整数 c[1], c[2], ..., c[n],表示各个结点的奶酪价值。
接下来 m 行,每行三个正整数 u[i]、v[i]、w[i],表示连接结点 u[i] 与结点 v[i] 的边,边权为 w[i]。
输出格式
输出一行,一个整数,表示老鼠所能拿到的奶酪价值之和。
样例
输入样例 1
5 5 1 2 1 2 4 8 16 1 2 4 2 3 3 3 4 1 2 5 2 3 1 8
输出样例 1
8
样例解释 1
村洞到结点 x 的最短时间小于猫窝到村洞 dist(1,2)=4 的结点为 2,3,5,其奶酪价值之和为 2+4+2=8。
输入样例 2
6 10 3 4 1 1 1 1 1 1 1 2 6 2 3 3 3 1 4 3 4 5 4 5 8 5 6 2 6 4 1 3 2 4 5 4 4 3 3 6
输出样例 2
3
数据范围
对于所有测试点,保证 1 <= n <= 10^5,1 <= m <= 10^5,1 <= a, b <= n 且 a != b,1 <= c[i] <= 10^9,1 <= w[i] <= 10^9,图连通。