Bellman-Ford算法

来源:互联网 发布:angularjs 数组 编辑:程序博客网 时间:2024/05/22 06:27

当边的权重有负值时,不能是用Dijkstra算法(参考Dikjstra算法,想想)。

queue<int> q;bool inq[maxn];for(int i = 0; i < n; i++) d[i]=(i==0 ? 0 : INF);memset(inq,0,sizeof(inq));q.push(0);while(!q.empty()){    int x = q.front(), q.pop();    inq[x] = false // 表明不在队列中    for(int e = first[x]; e!=-1 e=next[e]) if(d[v[e]] > d[x]+w[e])    {        d[v[e]] = d[x]+w[e];        if(!inq[v[e]]){            inq[v[e]] = true;            q.push(v[e]);        }    }}

其中v,w,first,next分别代表的意义,请参考上一篇博客。

0 0