题目大意,货币之间对兑换,如果起始有 1 美元,1美元=0.5英镑 1英镑=10法郎,1法郎=0.21 美元。经过交换 能够得到 1*0.5*10*0.21=1.05 美元,问给定货币和汇率,能够实现上述操作

分析:我们把乘法两边取对数,就变成 lg0.5+lg10+lg0.21>lg 1=0的情况,如果我们给每个参数都取上负数的话,就变成了最短路问是否存在负环

#include <bits/stdc++.h>
#define cl(arr) memset(arr,0,sizeof(arr))
#define fl(arr,val) memset(arr,val,sizeof(arr))
using namespace std;
const int maxn=1e5+50;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
typedef pair<int,int>PII;
typedef long long ll;
map <string,int>mp;
int n;
struct edge
{int to;double cost;edge(int v,double w):to(v),cost(w){}
};
vector<edge>E[maxn];
void addedge(int u,int v,double c)
{E[u].push_back(edge(v,c));
}
double d[100];
int cnt[maxn];
bool dijkstra()
{for(int i=0;i<100;i++){d[i]=1e18;}priority_queue<PII,vector<PII>,greater<PII> >q;d[1]=0;q.push(PII(0,1));cnt[1]++;while(!q.empty()){PII x=q.top();q.pop();double cost=x.first;int u=x.second;for(int i=0;i<E[u].size();i++){int v=E[u][i].to;double w=E[u][i].cost;if(d[v]>d[u]+w){d[v]=d[u]+w;q.push(PII(d[v],v));cnt[v]++;}if(cnt[v]>n)return true;}}return false;
}
int main()
{int Case=1;int p=0;while(~scanf("%d",&n)&&n){for(int i=1;i<105;i++){E[i].clear();}cl(cnt);mp.clear();int index=0;for(int i=1;i<=n;i++){string s;cin>>s;mp[s]=++index;}int m;scanf("%d",&m);for(int i=1;i<=m;i++){string a,b;double t;cin>>a>>t>>b;int u=mp[a];int v=mp[b];t= -log10(t);addedge(u,v,t);}if(dijkstra()){printf("Case %d: Yes\n",++p);}else{printf("Case %d: No\n",++p);}}return 0;
}

HDU - 1217 Arbitrage [最短路]相关推荐

  1. HDU 1217 Arbitrage (Floyd + SPFA判环)

    题目链接:HDU 1217 Arbitrage 简单的货币转换问题,给定多种货币,以及货币之间的汇率,问能否通过货币的转换实现收益. 例如: 1 US Dollar buys 0.5 British ...

  2. POJ 2240 HDU 1217 Arbitrage(Floyd)

    Description 给定一些货币之间的单向汇率,问一笔钱能否经过若干次对换而增值 Input 多组用例,每组用例第一行为货币种数n,之后n行为货币类型,第n+2行为兑换规则数m,之后m行为货币之间 ...

  3. HDOJ 2112 HDU Today (最短路 Dijkstra SPFA)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  4. Hdu 1217 最短路.cpp

    题意: 各国的汇率兑换.. 给出各国之间汇率兑换的比例,然后问你是否可以通过不断地兑换最后挣钱.. 譬如美金兑换英镑 是0.5 英镑兑换法币是 10 法币兑换美金是 0.21 所以通过1美金兑换成0. ...

  5. HDOJ 题目1217 Arbitrage(最短路径,Floyd)

    NEW~ 关于举办计算机学院大学生程序设计竞赛(2014'11)的报名通知 Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Lim ...

  6. POJ 2240 Arbitrage(最短路 套汇)

    题意  给你n种币种之间的汇率关系  推断是否能形成套汇现象  即某币种多次换为其他币种再换回来结果比原来多 基础的最短路  仅仅是加号换为了乘号 #include<cstdio> #in ...

  7. hdu 3790(最短路)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem D ...

  8. hdu 6852Path6(最短路+最小割)

    传送门 •题意 有n个城市,标号1-n 现花费最小的代价堵路 使得从1号城市到n号城市的路径边长 (注意只是变长不是最长) 堵一条路的代价是这条路的权值 •思路 在堵路以前,从1到n的最小路径当然是最 ...

  9. HDU - 6582 Path(最短路+最大流)

    题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的有向图,现在问让最短路变长的最小花费是多少 题目分析:增加最短路的最小花费,我们可以将最短路上的边单独拿出来,再求一下最小割就好了,用 ...

最新文章

  1. python 继承和多态
  2. 备战金九银十,阿里P8师兄指导完整攻略(附:学习资料+面试宝典+项目实战笔记)
  3. svn自动同步更新脚本(windows)
  4. 层次聚类多维度matlab实现_第34集 python机器学习:凝聚聚类
  5. 模拟 Codeforces Round #249 (Div. 2) C. Cardiogram
  6. Android 6.0以上运行权限及RxPermissions的使用
  7. DropDownList选中值,不存在的时候不出错的写法
  8. Mybatis占位符问题—ReflectionException: There is no getter for property named xxx
  9. qt中的菜单QMenu QAction
  10. 【ElasticSearch】Es 源码之 SettingsModule 源码解读
  11. Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
  12. 类似web表单提交 使界面的滚动条 按要求定位到指定控件
  13. C++--第9课 - 构造与析构 - 上
  14. DirectX修复工具(DirectX Repair)修复工具V4.0增强版
  15. 先码后看 Spring源码解析 侵立删
  16. appcms手机端点击按钮返回顶部
  17. Nginx代理规则总结
  18. 天清江月白,心静海鸥知
  19. AD与DNS集成,且有备份AD与DNS,主AD与DNS坏,备份DNS如何成为主
  20. Yunzai-Bot(云崽) | Linux Docker保姆级安装教程

热门文章

  1. 用ATL ActiveX 绘制任意平面函数的曲线
  2. INVOKE expression [, arguments]
  3. 【OpenCV-Python-Tutorial 数字图像处理】opencv3.4 官方API及其实例总结
  4. 触摸板即是屏幕 — 灵耀 X Pro 长测
  5. 套接字的秘密—socket与sock
  6. Linux使用nexus搭建maven私服
  7. 4.你生活在3033年,地球和天女星座开战了,你是地球防卫军的密码破解员,以下你是破解出来的部分密码 tyt:好 huy:这 bvn:天 jkl :是 lgc:你 qqq:哈 dz:才
  8. 梦幻新开服务器维护,梦幻西游新开的新服务器,新开后是不是免费的 – 手机爱问...
  9. 中移动铁腕治理 免费WAP网站遭遇灭顶之灾
  10. Ubuntu搭建pptp服务器(保姆级)