hdoj 1217 Arbitrage(floyd+处理名字为字符串的情况)
2016-02-02 02:26
429 查看
Arbitrage
[align=left]Problem Description[/align]Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a currency into more than one unit of the same currency. For example, suppose that 1 US Dollar
buys 0.5 British pound, 1 British pound buys 10.0 French francs, and 1 French franc buys 0.21 US dollar. Then, by converting currencies, a clever trader can start with 1 US dollar and buy 0.5 * 10.0 * 0.21 = 1.05 US dollars, making a profit of 5 percent.
Your job is to write a program that takes a list of currency exchange rates as input and then determines whether arbitrage is possible or not.
[align=left]Input[/align]
The input file will contain one or more test cases. Om the first line of each test case there is an integer n (1<=n<=30), representing the number of different currencies. The next
n lines each contain the name of one currency. Within a name no spaces will appear. The next line contains one integer m, representing the length of the table to follow. The last m lines each contain the name ci of a source currency, a real number rij which
represents the exchange rate from ci to cj and a name cj of the destination currency. Exchanges which do not appear in the table are impossible.
Test cases are separated from each other by a blank line. Input is terminated by a value of zero (0) for n.
[align=left]Output[/align]
For each test case, print one line telling whether arbitrage is possible or not in the format "Case case: Yes" respectively "Case case: No".
[align=left]Sample Input[/align]
3 USDollar BritishPound FrenchFranc 3 USDollar 0.5 BritishPound BritishPound 10.0 FrenchFranc FrenchFranc 0.21 USDollar 3 USDollar BritishPound FrenchFranc 6 USDollar 0.5 BritishPound USDollar 4.9 FrenchFranc BritishPound 10.0 FrenchFranc BritishPound 1.99 USDollar FrenchFranc 0.09 BritishPound FrenchFranc 0.19 USDollar 0
[align=left]Sample Output[/align]
Case 1: Yes Case 2: No
[align=left]Source[/align]
University of Ulm Local
Contest 1996
这样写比map快很多!!!
#include"stdio.h" #include"string.h" struct node { char name[33]; }E[33]; int main() { double map[31][31]; double ans[31][31]; double t; char temp[33]; int k,n,m,k1,k2,i,j,Case=1; while(scanf("%d",&n),n) { for(i=1;i<=n;i++) scanf("%s",E[i].name); scanf("%d",&m); for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j) map[i][j]=1; else map[i][j]=0; } for(i=1;i<=m;i++) { scanf("%s",temp); for(k1=1;k1<=n;k1++) if(strcmp(E[k1].name,temp)==0) break; scanf("%lf",&t); scanf("%s",temp); for(k2=1;k2<=n;k2++) if(strcmp(E[k2].name,temp)==0) break; map[k1][k2]=t; } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) ans[i][j]=map[i][j]; } for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) if(ans[i][j]<ans[i][k]*ans[k][j]) ans[i][j]=ans[i][k]*ans[k][j]; } } if(ans[1][1]>1) printf("Case %d: Yes\n",Case++); else printf("Case %d: No\n",Case++); } return 0; }
相关文章推荐
- virtualhost配置不成功,纠结了好几个小时的问题 :AH01630: client denied by server configuration
- hdu2665 主席树模板题
- MSP430WARE++的使用4:GPIO的使用方法a
- 应用jQuery插件pagination进行分页处理
- 设计模式之命令模式
- hdu 1279 验证角谷猜想(简单的模拟)
- 最近5年133个Java面试问题列表
- 基础知识篇(2)
- SSH连接出错问题收集
- install composer on ubuntu14.04
- how to install qt on ubuntu
- 改革后解放军领导管理体系全揭秘
- C#自定义控件 ————进度条
- Codeforces 621A Wet Shark and Odd and Even
- 设计模式之迭代器模式
- A Simple Problem with Integers (POJ_3468) 线段树+区间更新
- 给久坐族的10个保健建议
- MSP430应用技巧3:MSP-FET430UIF V3驱动程序的安装
- JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
- pairing heap 学习以及对于dijkstra算法的再分析