• POJ2240 Arbitrage bellman


    跟POJ-1860基本一样,bellman求是否存在环。这里吸取了别人的代码,让bellman算法的外循环直接增加一次,再判定是否在这个过程中有无更新推出的情况。

    代码如下:

    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <map>
    #include <string>
    using namespace std;
    
    int N, pos, cnt;
    double dis[35];
    map<string,int>mp;
    
    struct Node
    {
        int x, y;
        double rate;
    }e[905];
    
    bool bellman()
    {
        int flag;
        fill(dis, dis+35, 1000);
        for (int i = 1; i <= N; ++i) {
            flag = 0;
            for (int j = 1; j <= pos; ++j) {
                if (dis[ e[j].x ] * e[j].rate - dis[ e[j].y ] > 1e-6) {
                    dis[ e[j].y ] = dis[ e[j].x ] * e[j].rate;
                    flag = 1;
                }
            }
            if (!flag) {
                break;
            }
        }
        if (flag) {
            return true;
        }
        else {
            return false;
        }
    }
    
    int main()
    {
        int M, ca = 0;
        char a[105], b[105];
        double rate;
        while (scanf("%d", &N), N) {
            mp.clear();
            pos = cnt = 0;
            for (int i = 1; i <= N; ++i) {
                scanf("%s", a);
                mp[a] = ++cnt;
            }
            scanf("%d", &M);
            for (int i = 1; i <= M; ++i) {
                scanf("%s %lf %s", a, &rate, b);
                ++pos;
                e[pos].x = mp[a], e[pos].y = mp[b];
                e[pos].rate = rate;
            }
            printf("Case %d: ", ++ca);
            printf(bellman() ? "Yes\n" : "No\n");
        }
        return 0;
    }
  • 相关阅读:
    记一下后续要看的点
    vue 封装request.js
    shuf命令简单用法
    Redis string 字符串
    Redis 事务操作
    Redis Zset 有序集合
    php操作redis的一些基本操作
    pytest自动化测试入门介绍
    idea&myeclipse 自动生成serialVersionUID
    leetCode1104. 二叉树寻路(medium)
  • 原文地址:https://www.cnblogs.com/Lyush/p/2571993.html
Copyright © 2020-2023  润新知