码迷,mamicode.com
首页 > 编程语言 > 详细

Bellman算法

时间:2017-02-03 16:57:52      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:oop   efi   stream   loop   sizeof   oid   return   cost   ret   

#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;
}

 

Bellman算法

标签:oop   efi   stream   loop   sizeof   oid   return   cost   ret   

原文地址:http://www.cnblogs.com/superxuezhazha/p/6362865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!