POJ 2240_Arbitrage
2016-02-08 01:10
363 查看
题意:
给定一系列货币汇率,求能否从一种货币,经过一系列转换,最终转化回更高价值的该种货币。分析:
即为求最长路并判断是否存在“正”权值回路,这里用的bellmanford算法。代码:
#include<iostream> #include<cstring> #include<map> using namespace std; const int maxn = 50, maxm =1005; int n, m, flag = 0, cnt = 1; map<string, int>mp; struct edge{ int from, to; double w; }e[maxm]; double d[maxn]; int find_loop(int v) { memset(d,0,sizeof(d)); d[v] = 1; for(int i = 0; i < n; i ++){ for(int j = 0; j < m; j++){ if(d[e[j].to] < d[e[j].from] * e[j].w){ d[e[j].to] = d[e[j].from] * e[j].w; if(i==n-1) return 1; } } } return 0; } int main (void) { while(cin>>n&&n){ flag = 0; string ci, cj; for(int i = 0; i < n; i ++) {cin>>ci;mp[ci] = i;} cin>>m; for(int i = 0; i < m ; i ++){ cin>>ci>>e[i].w >>cj; e[i].from = mp[ci]; e[i].to = mp[cj]; } for(int i = 0; i < n; i++){ flag = find_loop(i); if(flag) break; } if(flag) cout<<"Case "<<cnt++<<": Yes"<<endl; else cout<<"Case "<<cnt++<<": No"<<endl; } return 0; }
相关文章推荐
- 01背包_第k优解
- 面试笔试杂项积累-leetcode 161-165
- 完全背包
- POJ 1182_食物链
- POJ 1182_食物链
- 面试笔试杂项积累-leetcode 156-160
- 01背包
- 面试笔试杂项积累-leetcode 151-155
- 2016,丙申(猴年)
- USACO--Barn Pepair
- android数据存储的四种方案(三)
- hdu 5621 KK's Point(数学,推理题)
- swift学习笔记之-继承
- could not open parameter file '/u01/app/oracle/product/11.1.0/db_1/dbs/initorc11g.ora
- [bzoj3295] [Cqoi2011]动态逆序对
- javascript计算器工作原理
- 面试笔试杂项积累-leetcode 146-150
- welcome to new life
- zoj3471 Most Powerful(状态压缩dp)
- POJ 1698 Alice's Chance(最大流)