zoukankan      html  css  js  c++  java
  • Hdu 1217 最短路.cpp

    题意:

      各国的汇率兑换..

      给出各国之间汇率兑换的比例,然后问你是否可以通过不断地兑换最后挣钱..

      譬如美金兑换英镑 是0.5

        英镑兑换法币是 10

        法币兑换美金是 0.21

      所以通过1美金兑换成0.5英镑然后兑换成0.5*10 = 5的法币再兑换成5*0.21的美金就可以得到1.05的美金就可以挣钱了~

    思路:

      这个跟最短路的意思其实是一样的..

      不过是看看最后的dis[1][1]是否大于1  


    Tips:

      这题由题意可以发现最后的结果是由G[1][i]*G[i][j]*G[j][k]*..G[..][1]得到的..

      这里因为是乘运算..所以其实和最短路中的负权路是一样的..

      所以的所以不能用floyd而应该用spfa或者是floyd..

    Code:

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <map>
     5 using namespace std;
     6 #define INF 0x11111111
     7 
     8 const int MAXN = 35;
     9 
    10 int n;
    11 double G[MAXN][MAXN];
    12 double dis[MAXN][MAXN];
    13 
    14 int main()
    15 {
    16    // freopen("in.txt", "r", stdin);
    17     int m, iCase = 1;
    18     double a;
    19     string str, str1;
    20     map<string, int> M;
    21     while (cin >> n) {
    22         if (n == 0) break;
    23         M.clear();
    24         memset(G, INF, sizeof(G));
    25         for (int i = 1; i <= n; ++i) {
    26             cin >> str;
    27             M[str] = i;
    28         }
    29         cin >> m;
    30         while (m--) {
    31             cin >> str >> a >> str1;
    32             G[M[str]][M[str1]] = a;
    33         }
    34 
    35         for (int k = 1; k <= n; ++k)
    36             for (int i = 1; i <= n; ++i)
    37                 for (int j = 1; j <= n; ++j) {
    38                     if (G[i][k] != INF && G[k][j] != INF && k != j && k != j && G[i][j] < G[i][k]*G[k][j])
    39                         G[i][j] = G[i][k]*G[k][j];
    40                 }
    41         cout << "Case " << iCase++ << ": ";
    42         if (G[1][1] > 1) puts("Yes");
    43         else puts("No");
    44 
    45     }
    46     return 0;
    47 }
    floyd

      

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217

  • 相关阅读:
    GL追溯
    Oracle XML Publisher中需要实现每页打印固定行数
    Form开发过程中积累下来的技巧:
    查询EBS 系统在线人数
    Oracle EBS 二次开发 FND_GLOBAL PACKAGE 返回全局变量
    Oracle EBS PA模块费用分摊与转资摘记
    PA模块常用表
    Oracle Form删除list项
    获取EBS用户密码
    JavaScript中const,var,let区别与用法
  • 原文地址:https://www.cnblogs.com/Griselda/p/3089514.html
Copyright © 2011-2022 走看看