zoukankan      html  css  js  c++  java
  • POJ 2240 Arbitrage

    题目大意:跟我上次做的那道感觉一模一样,上次链接:https://www.cnblogs.com/ducklu/p/9231563.html

    解题思路:Bellman_Ford判断有无正环(对了,第一次RE了,数组要开大点,我开始只开了40)

     1 #include <iostream>
     2 #include <cstring>
     3 #include <algorithm>
     4 #include <map>
     5 #define INF 1000000
     6 #define MAXVERTEXNUM 1000
     7 using namespace std;
     8 
     9 int Nv, Ne, num;
    10 struct Edge
    11 {
    12     int a, b;
    13     double Weight;
    14 }E[MAXVERTEXNUM];
    15 double dist[MAXVERTEXNUM];
    16 
    17 bool Bellman_ford()
    18 {
    19     for (int i = 1; i <= Nv; ++i)
    20     {
    21         bool flag = false;
    22         for (int j = 0; j < num; ++j)
    23         {
    24             if (dist[E[j].b] < dist[E[j].a] * E[j].Weight)
    25             {
    26                 dist[E[j].b] = dist[E[j].a] * E[j].Weight;
    27                 flag = true;
    28             }
    29         }
    30         if (!flag)
    31             break;
    32     }
    33 
    34     for (int j = 0; j < num; ++j)
    35         if (dist[E[j].b] < dist[E[j].a] * E[j].Weight)
    36             return true;
    37 
    38     return false;
    39 }
    40 
    41 int main()
    42 {
    43 //    freopen("test.txt", "r", stdin);
    44     int cas = 0;
    45     while (true)
    46     {
    47         num = 0;
    48         map<string, int> m;
    49         memset(dist, 0, sizeof(dist));
    50         dist[1] = 1;
    51 
    52         cin >> Nv;
    53         if (!Nv)
    54             return 0;
    55         cas++;
    56 
    57         for (int i = 1; i <= Nv; ++i)
    58         {
    59             string temp;
    60             cin >> temp;
    61             m.insert( {temp, i} );
    62         }
    63 
    64         cin >> Ne;
    65 
    66         for (int i = 1; i <= Ne; ++i)
    67         {
    68             string s1, s2;
    69             double W;
    70             cin >> s1 >> W >> s2;
    71 
    72             E[num].a = m[s1], E[num].b = m[s2];
    73             E[num++].Weight = W;
    74         }
    75 
    76         if (Bellman_ford())
    77             cout << "Case " << cas << ": Yes" << endl;
    78         else
    79             cout << "Case " << cas << ": No" << endl;
    80 
    81 //        getchar();
    82     }
    83 
    84     return 0;
    85 }
  • 相关阅读:
    springboot 整合Elasticsearch
    SpringBoot 使用AOP记录接口访问日志
    Java8 Collectors类的静态工厂方法
    Java8 Stream流方法
    Java8 Lambda表达式
    Java通过行为参数化传递代码
    springboot使用SpringTask实现定时任务
    Cron表达式
    springboot整合swagger-ui
    springboot整合redis
  • 原文地址:https://www.cnblogs.com/ducklu/p/9248372.html
Copyright © 2011-2022 走看看