HDU 1217 Arbitrage(Flody)
2015-09-07 20:53
387 查看
Flody的变形,初始化所有d[i][i] = 1,其他为0。 这样在Flody的时候取大就行了。 然后检查所有点d[i][i]是否有大于1的。
细节参见代码:
细节参见代码:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<vector> #include<cmath> #include<map> using namespace std; typedef long long ll; const double INF = 1000000000; const int maxn = 30 + 5; int n,m,kase = 0,id1,id2; double d[maxn][maxn],v; bool solve() { for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j] = max(d[i][j],d[i][k]*d[k][j]); for(int i=1;i<=n;i++) if(d[i][i] > 1.0) return true; return false; } map<string,int> p; char s1[10000],s2[10000]; int main() { while(~scanf("%d",&n)&&n) { p.clear(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j] = (i == j ? 1 : 0); for(int i=1;i<=n;i++) { scanf("%s",s1); p[s1] = i; } scanf("%d",&m); for(int i=0;i<m;i++) { scanf("%s%lf%s",s1,&v,s2); id1 = p[s1]; id2 = p[s2]; d[id1][id2] = v; } if(solve()) printf("Case %d: Yes\n",++kase); else printf("Case %d: No\n",++kase); } return 0; }
相关文章推荐
- POJ3632解题报告
- Python之面向对象初体验
- iOS学习篇章3--SEL与@selector
- 小马哥---高仿红米note 主板型号T600 分A B D 三版本 拆机主板图与开机界面图
- 记录一个查询颜色RGB和HSV值还有HTTP状态码等的网站
- MAP集合应用
- python会什么比c慢
- Internet应用简介和使用学习工具总结
- HDU 1542 Atlantis (线段树 +离散化+ 扫描线)
- HDU5095
- Hadoop源码分析之DataNode的启动与停止
- hashmap
- 1-6 Zabbix 一些基本监控项
- android模拟器无法复制文件到sdcard
- 分支结构:(Day-2)
- Mac下清理DNS缓存的方法
- 日本語 擬態語#1
- \boot 空间不足解决方法
- SetTimer()、OnTime()、KillTimer()函数关系
- 【攻克Android (40)】JSON解析