Arbitrage
Arbitrage
判正环
套利问题,给出若干对货币兑换的汇率,求能否通过汇率兑换使钱越来越多
- floyd求最长路,如果某一点到自身的最长路大于 1, 则可以
- tarjan 判正环
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <map>
using namespace std;
typedef long long ll;
const int N = 50;
map<string, int> mp;
int idx, n, m;
double f[N][N];
int find(string &s)
{
if (mp.count(s))
return mp[s];
return mp[s] = ++idx;
}
void init()
{
mp.clear();
idx = 0;
for (int i = 0; i <= n; i++)
for (int j = 0; j <= n; j++)
f[i][j] = 0;
}
void floyd()
{
for (int k = 1; k <= n; k++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
f[i][j] = max(f[i][j], f[i][k] * f[k][j]);
}
int main()
{
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int t = 0;
while(cin >> n, n)
{
init();
++t;
for (int i = 1; i <= n; i++)
{
string s;
cin >> s;
find(s);
}
cin >> m;
while(m--)
{
string s1, s2;
double x;
cin >> s1 >> x >> s2;
f[mp[s1]][mp[s2]] = x;
}
floyd();
bool flag = false;
for (int i = 1; i <= n; i++)
{
if (f[i][i] > 1)
{
flag = true;
break;
}
}
cout << "Case " << t << ": ";
cout << (flag ? "Yes" : "No") << endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!