MeUmy的海底捞抽奖旅程
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这一天咩栗与大白狗去吃海底捞,海底捞服务员告诉他们,海底捞推出来一个新的活动。
海底捞给他们提供了一张地图.
上面包含了N家海底捞,编号从0到N-1,和M条可以连接两个海底捞店的路,和每家店的开业时间为t。(出题人没见过只能单向的路)
并且提供了一条很长很长的字符串S和ST条比较短的字符串Si。短的字符串是从0到ST-1编号的。
然后让呜米说Q次,每次说三个数字 ,第一个数字代表店 x ,第二个数字代表店 y,第三个数字代表时间 t 。
求出 t 时间 x 店到 y 店之间最短的路径长度LEN,用LEN%ST的结果取出编号相同的Si字符,Si字符串在长字符串S内出现的次数,会被记录下来。
如果 t 时间的时候x店或者y店没有开业或者t时间x店与y店还不能互通,就视为不能互相到达,会记录下-ST。(负的ST)
需要中转才能互通或者可以通过中转减少最短距离的情况下,只能在t 时间以及之前,已经开业的店可以进行中转。
最后把记录下的数字加起来,如果大于R就可以免单。
请问记录下的数字加起来是多少,能不能免单?

注:
aaa
aa
算aa出现两次

ababa

aba
算aba出现两次
而且S和Si只存在小写字母

输入描述:

第一行五个整数 N M ST R Q
第二行N个整数 t  保证t不降

第三行一个字符串S
接下来ST条字符串Si
接下来M行每行三个整数x,y,w ( x到y距离w)
接下来Q行每行三个整数x,y,t  保证t不降

输出描述:

输出两行
第一行能不能免单 能YES 不能NO
第二行一个整数 记录下的数字加起来是多少
示例1

输入

复制
4 5 5 20 4
1 2 3 4
aaaaaaaaa
a
a
a
a
a
2 3 1
0 2 1
2 1 4
0 3 5
3 1 2
0 1 2
2 1 3
0 1 3
0 1 4

输出

复制
YES
22