其他分享
首页 > 其他分享> > 单源最短路

单源最短路

作者:互联网


```**------------恢复内容开始------------**
## dijkstra /spfa  /floyd多源变单源
###热浪 https://www.acwing.com/problem/content/1131/
模板题 使用spfa过 
spfa 从队列中取出点进行松弛操作 使用st[]记录点是否还在队列中  如果这个点本来就存在队列中那么就重复加入点了

void spfa(int s){
memset(d, 0x3f, sizeof d);
d[s]=0;
int hh=0,tt=1;
st[s]=true;q[0]=s;

while(hh!=tt){
    int t=q[hh++];
    if(hh==N) hh=0;
    st[t]=false;
    for (int i = h[t];  ~i ; i =ne[i] ){
        int j=e[i];
        if(d[j]>d[t]+w[i]){
            d[j]=d[t]+w[i];
            if(st[j]==false){
                st[j]=true;
                q[tt++]=j;
                if(tt==N) tt=0;
                
            }
        }
    }        
}

}

##信使https://www.acwing.com/problem/content/1130/
广播式求时间 求广播所有点的最短时间 每个点接受到向他的邻边广播
指挥部到每个边的路径 

相当于求一个点到所有点的最短路的最长长度

这里数据范围小使用Floyd 
注意使用Floyd 必须初始化 d[i][i]=0;

------------恢复内容结束------------

标签:int,短路,单源,st,------------,hh,spfa,tt
来源: https://www.cnblogs.com/liang302/p/16182423.html