Two Paths HDU

来源:互联网 发布:远洋数据推销什么 编辑:程序博客网 时间:2024/06/03 10:45

明明是裸的水题。。可是没法一下子做出来。。因为在d2和d1的地方的细节卡了。。
还有看别人的代码。

void spfa( ){    queue<int>q;    q.push(1);dist[1][0]=0;    while(!q.empty()){        int u=q.front();q.pop();        inq[u]=0;        for(int i=fst[u];~i;i=nxt[i]){            int v=to[i];            LL d1=dist[u][0]+cost[i];            LL d2=dist[u][1]+cost[i];            if(d1<dist[v][0]){                dist[v][1]=dist[v][0];                dist[v][0]=d1;if(!inq[v])inq[v]=1,q.push(v);            }            if(d1>dist[v][0]&&d1<dist[v][1]){//这个d1》dist【v】【0】                dist[v][1]=d1;if(!inq[v])inq[v]=1,q.push(v);            }            if(d2<dist[v][1]){                dist[v][1]=d2;                if(!inq[v])                q.push(v),inq[v]=1;            }        }    }}