SPFA最短路径模板

来源:互联网 发布:scala python 编辑:程序博客网 时间:2024/06/02 13:56
int spfa(int src){    queue<int> q;    bool inq[SIZE] = {0};    for(int i = 0; i <= n; i++) d[i] = (i == src)? 0:INF;    q.push(src);    while(!q.empty())    {        int x = q.front(); q.pop();    //并不是很理解,为什么之前就要出队        inq[x] = 0;     //HDU3790之后出队会WA,找不到原因        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]] = 1;                if(++sum[v[e]] > n)   //判断负环                 {                    return -1;                }                q.push(v[e]);            }        }    }    if(d[n] == INF) return -2;    else return d[n];}

0 0
原创粉丝点击