博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bellman - Ford算法c++实现(前向星)
阅读量:6495 次
发布时间:2019-06-24

本文共 1333 字,大约阅读时间需要 4 分钟。

  hot3.png

/*   Bellman - Ford   */#include 
#include 
#include 
#define Inf 0x7fffffff#define MaxV 10000#define MaxE 10000using namespace std;int N,M;struct Edge{    int to,next,w;}edge[MaxE];int size,head[MaxV];void InsertEdge(int from,int to,int w){    edge[size].to=to;    edge[size].w = w;    edge[size].next=head[from];    head[from]=size++;}int dist[MaxV];bool bellmanFord(int s){    int i,j,k;    int to;    for(i=1;i<=N;i++)        dist[i]=Inf;    dist[s]=0;    for(i=1;i<=N-1;i++)                     //每个点都更新N-1 次    {        for(j=1;j<=N;j++)           //每个点更新一次        {            if(dist[j]==Inf)    continue;   //如果不能到达,则下一个点            for(k=head[j];k+1;k=edge[k].next)            {                to=edge[k].to;                if(edge[k].w!=Inf&&dist[to]>dist[j]+edge[k].w)                    dist[to]=dist[j]+edge[k].w;            }        }    }    for(j=1;j<=N;j++)    {        if(dist[j]==Inf)    continue;   //如果不能到达这个点        for(k=head[j];k+1;k=edge[k].next)        {            to=edge[k].to;            if(edge[k].w!=Inf&&dist[to]>dist[j]+edge[k].w)                return false;        }    }    return true;}void init(){    int from,to,w;    scanf("%d%d",&N,&M);    size=0;    memset(head,-1,sizeof(head));    for(int i=0;i

转载于:https://my.oschina.net/MrHou/blog/163977

你可能感兴趣的文章
贪心/数学 Codeforces Round #212 (Div. 2) A. Two Semiknights Meet
查看>>
Python类__call__()方法
查看>>
「小程序JAVA实战」 小程序wxss样式文件的使用(七)
查看>>
容斥定理,皮克公式
查看>>
git+idea
查看>>
cocos2d游戏开发,常用工具集合
查看>>
FatTree胖树拓扑结构
查看>>
Kafka深度解析
查看>>
unsigned 后面不跟类型的情况
查看>>
fio硬盘压力测试
查看>>
信号处理——卷积(convolution)的实现
查看>>
多线程同步(循环50 基础加深版)
查看>>
Black and White
查看>>
静态变量和实例变量的区别
查看>>
晨跑【最小费用最大流】
查看>>
景点中心 C组模拟赛
查看>>
iOS国际化(多语言设置)
查看>>
bzoj 2733 平衡树启发式合并
查看>>
sublime简书安装配置
查看>>
爱上MVC~Web.Config的Debug和Release版本介绍
查看>>