POJ 2240 - Arbitrage
来源:互联网 发布:c语言小游戏编程 编辑:程序博客网 时间:2024/06/06 04:32
题目大概意思是给你一些货币兑换关系,问你能不能通过换来换去赚到钱。当然TM是不可能的啦,不然我早就把VALVE买下来了。咳哼!回到正题,分析一下发现这题是图论。把每一种货币当作节点,每一种兑换关系当作单向路径,求是否存在正环,可以用Bellman - Ford解决。
//time 79ms//memory 252K#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;#define INF (1<<30)double r[1010], d[32];int u[1010], v[1010];char cur[32][100];int search(int n, char tmp[100]){for (int i = 1; i <= n; ++i)if (strcmp(tmp, cur[i]) == 0)return i;return 0;}bool bellman(int n, int m){for (int k = 1; k <= n; ++k)for (int i = 1; i <= m; ++i)if (d[u[i]] < INF)d[v[i]] = d[v[i]] > d[u[i]] * r[i] ? d[v[i]] : d[u[i]] * r[i];if (d[1] > 1.0)return true;elsereturn false;}int main(){int n, count;for (count = 1;;count++){cin >> n;if (!n)break;memset(r, 0, sizeof(r));memset(cur, 0, sizeof(cur));for (int i = 1; i <= n; ++i)cin >> cur[i];int m;double rate;char x[100], y[100];cin >> m;for (int i = 1; i <= m; ++i){cin >> x >> rate >> y;u[i] = search(n, x);v[i] = search(n, y);r[i] = rate;}memset(d, 0, sizeof(d));d[1] = 1.0;printf("Case %d: ", count);if (bellman(n, m))printf("Yes\n");elseprintf("No\n");}return 0;}
0 0
- POJ 2240 Arbitrage
- poj 2240 Arbitrage
- POJ 2240 Arbitrage (Floyd)
- poj 2240Arbitrage(Floyd)
- POJ 2240 Arbitrage Floyd
- Poj 2240 Arbitrage
- POJ 2240 Arbitrage
- poj 2240 Arbitrage
- POJ 2240 Arbitrage (spfa)
- POJ 2240 Arbitrage
- POJ 2240 Arbitrage
- Poj 2240 Arbitrage
- POJ 2240 Arbitrage
- POJ 2240 Arbitrage
- POJ 2240 Arbitrage
- POJ 2240 Arbitrage
- POJ-2240-Arbitrage
- poj 2240 Arbitrage
- Oracle物化视图
- MfgTool工具烧写imx53_smd系统文件时,停在了“Jumping to OS image”.
- 2道裸的深度优先搜索, poj 1979, poj 2386
- Win7---保护眼睛的电脑窗口颜色设置
- 【知识小课堂】mongodb 之 查询关键词使用
- POJ 2240 - Arbitrage
- Bluetooth Driver Stack
- 今天总结下memcached
- 华为OJ——扑克牌大小
- RESTful之Jersey学习-01
- tomcat动态查看服务器打印日志
- SSH框架简单配置文件
- UIImage灰化 反色 棕色
- 抗锯齿方法两种(其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true))