设为首页 加入收藏

TOP

UVA 436 - Arbitrage (II)(floyd)
2015-07-20 17:48:55 来源: 作者: 【 】 浏览:18
Tags:UVA 436 Arbitrage floyd

UVA 436 - Arbitrage (II)

题目链接

题意:给定一些国家货币的汇率,问能否通过不断换货币使钱得到增长

思路:floyd,完事后判断一下有没有连到自己能大于1的情况

代码:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
       using namespace std; const int N = 35; int n; double g[N][N]; map
       
         hash; int main() { int cas = 0; while (~scanf("%d", &n) && n) { string a, b; hash.clear(); for (int i = 1; i <= n; i++) { cin >> a; hash[a] = i; } int m; double f; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (i == j) g[i][j] = 1.0; else g[i][j] = 0; } } scanf("%d", &m); while (m--) { cin >> a >> f >> b; int u = hash[a], v = hash[b]; g[u][v] = f; } for (int k = 1; k <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) g[i][j] = max(g[i][j], g[i][k] * g[k][j]); } } printf("Case %d: ", ++cas); int flag = 1; for (int i = 1; i <= n; i++) { if (g[i][i] > 1.0) { printf("Yes\n"); flag = 0; break; } } if (flag) printf("No\n"); } return 0; }
       
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇014写程序将一个栈按升序排序,对.. 下一篇C++实现堆排序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)