题目意思:给出 N 种 currency, M种兑换方式,Nick 拥有的的currency 编号S 以及他的具体的currency(V)。M 种兑换方式中每种用6个数描述: A, B, C, D,E, F。其中,C: 货币A 兑换 货币B 的汇率为C,佣金为D。E:货币B 兑换 货币 A 的汇率,佣金为F。假设含有的A货币是x,那么如果兑换成B,得到的货币B 就是:(x-D) * C。问从 货币S 经过一定次数的兑换,最终回归到货币S,能否使得 Nick 本来含有的 S 大。
分析:其实仔细想想就知道,此题如果有一个正的回路就应该输出yes,当然这个正回路应该和起点相连接。
Sample Input
3 2 1 20.0
1 2 1.00 1.00 1.00 1.00
2 3 1.10 1.00 1.10 1.00
Sample Output
YES
有一个好理解的说法:第一行n,m,s,v. n理解为货币的种类,即有多少个点,m是两个货币之间的银行个数,即有2*m条道路, s是拥有的货币,即原点,v是钱数。
第二行是两个点的标号AB,然后是A换B的利率,花费,当A换B时,钱就变成了(原钱数-花费)×利率,B换A的利率,花费。问可以让自己的钱变多吗。
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <c