• 最短路(Floyd_Warshall) POJ 2240 Arbitrage


    题目传送门

     1 /*
     2     最短路:Floyd模板题
     3         只要把+改为*就ok了,热闹后判断d[i][i]是否大于1
     4     文件输入的ONLINE_JUDGE少写了个_,WA了N遍:)
     5 */
     6 #include <cstdio>
     7 #include <iostream>
     8 #include <cstring>
     9 #include <algorithm>
    10 #include <string>
    11 #include <map>
    12 #include <cmath>
    13 #include <vector>
    14 #include <set>
    15 #include <queue>
    16 using namespace std;
    17 
    18 const int MAXN = 1e6 + 10;
    19 const int INF = 0x3f3f3f3f;
    20 double d[33][33];
    21 
    22 void Floyd_Warshall(int n)
    23 {
    24     for (int k=1; k<=n; ++k)
    25     {
    26         for (int i=1; i<=n; ++i)
    27         {
    28             for (int j=1; j<=n; ++j)
    29             {
    30                 if (d[i][j] < d[i][k] * d[k][j])
    31                 {
    32                     d[i][j] = d[i][k] * d[k][j];
    33                 }
    34             }
    35         }
    36     }
    37 
    38     for (int i=1; i<=n; ++i)
    39     {
    40         if (d[i][i] > 1)
    41         {
    42             puts ("Yes");    return ;
    43         }
    44     }
    45 
    46     puts ("No");    return ;
    47 }
    48 
    49 int main(void)        //POJ 2240 Arbitrage
    50 {
    51     #ifndef ONLINE_JUDGE
    52     freopen ("F.in", "r", stdin);
    53     #endif
    54 
    55     int n, num;    int cas = 0;
    56     while (cin >> n && n)
    57     {
    58         for (int i=1; i<=n; ++i)
    59         {
    60             for (int j=1; j<=n; ++j)
    61             {
    62                 if (i == j)        d[i][j] = 1;
    63                 else    d[i][j] = 0;
    64             }
    65         }
    66 
    67         map<string, int> m;
    68         string s, s1, s2;
    69         for (int i=1; i<=n; ++i)
    70         {
    71             cin >> s;
    72             m[s] = i;
    73         }
    74 
    75         cin >> num;
    76         for (int i=1; i<=num; ++i)
    77         {
    78             double w;
    79             cin >> s1 >> w >> s2;
    80             d[m[s1]][m[s2]] = w;
    81         }
    82 
    83         cout << "Case " <<  ++cas << ": ";
    84         Floyd_Warshall (n);
    85     }
    86 
    87     return 0;
    88 }
    编译人生,运行世界!
  • 相关阅读:
    查找 Linux 父进程的方法
    Flask 使用日志
    Jenkins Pipeline 编译后端 Java 代码
    K8S 指定 nfs 挂载
    K8S ingress nginx 设置访问白名单
    Jenkins Pipeline 编译前端 NodeJS 代码
    在 K8S 中测试环境中搭建 mongodb
    K8S argocd 安装配置
    搭建私有 helm 仓库 chartmuseum
    Helm templates 中的语法
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4372777.html
Copyright © 2020-2023  润新知