zoukankan      html  css  js  c++  java
  • Bellman算法

    #include<stdio.h>
    #include<iostream>
    #define maxn 1000
    #define inf 0x3fffffff
    using namespace std;
    struct Edage
    {
        int from;
        int to;
        int cost;
    }es[maxn];
    int d[maxn];
    int v,e;
    
    //无负圈,求单源最短路
    /*
    单源最短路:从一个点s到其他点的最短距离
    */
    void shortest_path(int s)
    {
        for(int i=0;i<v;i++) d[i]=inf;
        d[s]=0;
        bool update=false;
        while(true)
        {
            update=false;
            for(int i=0;i<e;i++)
            {
                Edage edage=es[i];
                if(d[edage.from]!=inf&&d[edage.from]+cost<d[edage.to])
                {
                    d[edage.to]=d[edage.from]+cost;
                    update=true;
                }
            }
            if(!update) break;
        }
    }
    
    //判断是否有负圈
    bool find_negative_loop()
    {
        memset(d,0,sizeof(d));
        for(int i=0;i<v;i++)
        {
            for(int j=0;j<e;j++)
            {
                Edage edage=es[j];
                if(d[edage.from]!=inf&&d[edage.from]+edage.cost<d[edage.to])
                {
                    d[edage.to]=d[edage.from]+edage.cost;
                    if(i==v-1) return true;
                }
            }
            
        }
        return false;
    }
  • 相关阅读:
    iBatis,第二次亲密接触
    微斯人,吾谁与归
    一个月了
    生命在于运动
    眼皮跳了好几天
    往返
    中病毒,学习批处理

    爱如潮水
    今天夏至
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/6362865.html
Copyright © 2011-2022 走看看