Quick actions

cmd+k|ctrl+k

Navigation

Languages

Floyd

Snippet info

Language

Cpp

Visibility

public

Author

meowjiao321

Created

2024-03-09T06:25:57.291109Z

Updated

2024-03-09T06:25:57.291109Z

/*
来自王老师,Floyd在最下面
void dijkstra(){
    memset(d,0x3f,sizeof(d));
    d[s]=0;
    for(int i=1;i<=n;i++){
        int mi=-1;
        for(int j=1;j<=n;j++)
            if(!f[j]&&(mi==-1||d[j]<d[mi]))
                mi=j;
        f[mi]=true;
        for(int j=pre[mi];j!=0;j=a[j].next){
            int to=a[j].to;
            if(!f[to]&&d[mi]+a[j].len<d[to])
                d[to]=d[mi]+a[j].len;
        }
    }
}

SPFA: Shortest Path Fast Algorithm
1.求带负权的最短路
2.判断负环

q.push(s)
f[s]=true;
while(队列里有点){
    u=q.front();
    for(u所有连接的点v){
        //如果有更短的路
        if(d[u]+uv的边长<d[v]){
            //更新走到v点的最短路
            d[v]=d[u]+uv的边长
            //如果点v不在队列中
            if(f[v]==false){
                q.push(v);
                f[v]=true;
            }
        }
    }
    q.pop();
    f[u]=false;
}

Floyd(插点法)
d[i,j]=min(d[i,j],d[i,k]+d[k,j])


*/
INFO