【发布时间】:2019-12-05 19:25:02
【问题描述】:
我正在尝试解决这个问题:https://open.kattis.com/problems/arbitrage
如果你要去参加世界总决赛,你不能依赖 捷克皇冠。你将不得不用你的钱来换取各种 外币。这个问题涉及多种货币和 他们的汇率。你的任务是验证一些交换 利率是安全的,即检测所谓套利的可能性。
套利是买卖操作的无风险组合 从市场价格的不平衡中获利。价格可能 适用于各种事物,通常是证券交易所,但也适用于货币。
输入 输入由几个测试用例组成。每个案例都以 一行包含一个正整数??????,1≤????≤200,该数 货币。
每个测试用例的第二行包含 ????货币代码分开 由一个空格。每个代码由3个大写字母和所有代码组成 在一个测试用例中是不同的。
第三行包含一个整数??????,0≤????≤????⋅(????−1), 可用的汇率数量。以下各项????线条 包含以下格式的一个汇率:第一种货币 代码、空格、第二货币代码、空格、整数 ??????????、冒号 (':') 和整数 ??????????。含义如下:如果您付款 ??????第一个货币的单位,你会得到?????????的单位 第二种货币。你可以假设 1≤????????,????????≤100 并且这两个 货币不同。
最后一个测试用例后面跟着一行 ????=0。
我的方法是在每个节点上做一个 dfs,检查是否有一个乘积大于 1 的循环。
这在O(n^2) 中运行。
有更快的解决方案吗?
【问题讨论】: