Hrbust 1801 肖申克的救赎【Floyd求最大环】
来源:互联网 发布:黑马程序员 课程表 编辑:程序博客网 时间:2024/04/30 19:13
肖申克的救赎Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 88(35 users)Total Accepted: 21(17 users)Rating: Special Judge: NoDescription 电影《肖申克的救赎》各位都应该非常的熟悉,当安迪杜弗瑞越狱后通过邮局将典狱长诺顿(如图)的黑账本邮寄到警察局。为了确保有足够的证据来逮捕诺顿,警察们需要仔细的对这个账本进行审查,找到诺顿洗钱的确凿证据。当然,钱的源头很难查明了,因为持有账户的人是杜弗瑞虚构出来的一个人物。但是在其它的过程中总是会出现一点蛛丝马迹的,比如诺顿喜欢用这些钱做一些交易,并且使自己最终得到更多的金钱(如果可能的话)。如果诺顿设法通过交易使自己的金钱获得增长,那么警察们就有机会找到诺顿违法的证据,就可以逮捕诺顿了。我们给出一些物品的换算比率,通过这些比率来判是否能找到诺顿违法的确凿证据。Input
本题有多组测试数据,一直处理到文件结束。对于每组数据,第一行输入两个整数m和n(n不超过100),分别表示最初金钱的数目(金钱用dollar代指)和兑换的组数。接下来n行输入方式如下:
物品1 物品2 兑换比率
表示一个物品1可以兑换多少个物品2,注意兑换比率应该是一个浮点数
Output 如果警方掌握了确凿的证据,输出“YES”并换行(不包括引号),否则输出“NO”并换行(不包括引号)Sample Input100 3
dollar rmb 6.27
rmb gold 0.33
gold dollar 4.01
Sample OutputYES
思路:
直接按照汇率建边,将每种货币都看成一个点, 那么接下来求一个最长路,就能够得到最大的汇率,因为最终想要转化成dollar.所以那么对应求的就是一个最大换。
因为点数比较小,所以直接跑Floyd即可。
Ac代码:
#include<stdio.h>#include<string.h>#include<map>#include<iostream>using namespace std;double a[150][150];char b[150];char c[150];int main(){ int m,n; while(~scanf("%d%d",&m,&n)) { memset(a,0,sizeof(a)); map<string,int >s; s["dollar"]=1; int cont=2; for(int i=0; i<n; i++) { double w; scanf("%s%s%lf",b,c,&w); { if(s[b]==0) { s[b]=cont++; } if(s[c]==0) { s[c]=cont++; } a[s[b]][s[c]]=w; } } for(int i=0; i<cont; i++) { for(int j=0; j<cont; j++) { for(int k=0; k<cont; k++) { a[j][k]=max(a[j][k],a[j][i]*a[i][k]); } } } if(a[1][1]*m>m) { printf("YES\n"); } else printf("NO\n"); }}
0 0
- Hrbust 1801 肖申克的救赎【Floyd求最大环】
- hdu1599 Floyd求最大环 最小环
- 肖申克的救赎
- 肖申克的救赎
- 肖申克的救赎(转贴)
- 肖申克的救赎
- 再看《肖申克的救赎》
- 《肖申克的救赎》1
- 《肖申克的救赎》2
- 肖申克的救赎 经典台词
- 肖申克的救赎
- 肖申克的救赎
- 肖申克的救赎
- 肖申克的救赎
- 肖申克的救赎 经典语录
- 肖申克的救赎
- 肖申克的救赎
- 肖申克的救赎
- adb logcat命令查看并过滤android输出log
- Faster R-CNN实验记录总结
- 8953系列----在aboot中读取boot version
- final关键字
- 如何让浏览器主动识别网站icon图标
- Hrbust 1801 肖申克的救赎【Floyd求最大环】
- [译]在C中表示补码最小值
- redis中各种数据类型对应的jedis操作命令
- PHP登陆跳转
- 图像基本运算
- Linux文件夹权限777,无法创建文件
- 电脑上用adb连接到Android设备(开发板也可)
- Caffe部署中的几个train-test-solver-prototxt-deploy等说明<二>
- 十大滤波算法