30059 - 套利
时间限制 : 1 秒
内存限制 : 128 MB
套利是指利用货币兑换率之间的差异,把某种货币的一个单位兑换成多于一个单位的同种货币。举个例子:假设 1 美元可以兑换 0.5 英镑,1 英镑可以兑换 10.0 法郎,而 1 法郎又可以兑换 0.21 美元。那么,通过一连串的货币兑换,精明的交易者可以从 1 美元出发,最终得到 0.5 \times 10.0 \times 0.21 = 1.05 美元,也就是赚取 5\% 的利润。
你的任务是编写一个程序,读入一组货币兑换率,并判断是否存在套利的可能。
输入
输入文件包含一个或多个测试用例。每个测试用例的第一行包含一个整数 n(1 \le n \le 30),表示不同货币的数量。
接下来的 n 行每行包含一种货币的名称,名称中不会出现空格。
下一行包含一个整数 m,表示后续兑换表的长度。
最后的 m 行中,每行依次包含源货币名称 c_i、一个实数
r_{ij} 和目标货币名称 c_j,其中
r_{ij} 表示从 c_i 兑换到 c_j 时的汇率。兑换表中没有列出的兑换均视为不可能进行。
测试用例之间由一个空行分隔。当读入的 n 为 0 时,输入结束。
输出
对于每个测试用例,输出一行,说明是否存在套利,格式分别为 Case case: Yes 或 Case case: No。
样例
输入
3 USDollar BritishPound FrenchFranc 3 USDollar 0.5 BritishPound BritishPound 10.0 FrenchFranc FrenchFranc 0.21 USDollar 3 USDollar BritishPound FrenchFranc 6 USDollar 0.5 BritishPound USDollar 4.9 FrenchFranc BritishPound 10.0 FrenchFranc BritishPound 1.99 USDollar FrenchFranc 0.09 BritishPound FrenchFranc 0.19 USDollar 0
输出
Case 1: Yes Case 2: No