SPFA
来源:互联网 发布:最短寻道时间优先算法 编辑:程序博客网 时间:2024/05/17 01:39
SPFA是一种最短路径的算法,它是Ford算法用队列实现,类似于深搜,不断对队列的头以及和它所有连接的点进行松弛操作。
所以,一个点可能多次入对。但是,一个点入队的次数不可能超过总点数,假如超过了,就说明有负环。也就是说,一个环的每一条边都是负数,这样,我们只要统计每个点的入队次数,就可以知道是否有负环了。
只要不断进行松弛操作,那么,最终就可以求到目标点到源点的最短路径了。
void SPFA(int s,int e)//s为源点,e为目标点
{
memset(vis,0,sizeof(vis));
int h=0,t=1,now;
a[0]=s; vis[s]=1;
memset(dis,127,sizeof(dis)); dis[s]=0;
while(h<t)
{
now=a[h%100000];
for(int i=1;i<=m;i++)
if(f[now][i]!=0)
{
if(dis[now]+f[now][i]<dis[i])//松弛操作
dis[i]=dis[now]+f[now][i];
if(vis[i]==0)
{
vis[i]=1; t++; a[t]=i;
}
}
vis[h]=0;
h++;
}
printf("%d\n",dis[e]);
}
0 0
- SPFA
- spfa
- spfa
- SPFA
- SPFA
- SPFA
- SPFA
- spfa
- SPFA
- SPFA
- SPFA
- SPFA
- SPFA
- spfa
- spfa
- spfa
- SPFA
- SPFA
- select数据较多时支持按输入信息模糊过滤选项集合
- 【转载】胜者树
- spring-boot学习笔记
- 【转载】计算几何中的精度问题(转)
- USACO 2016 open Bronze 解题报告
- SPFA
- C++著名类库
- USACO 2016 open Silver 解题报告
- 2016GDOI的总结
- COCOS2DX 3.X 相关命令
- (一) cifar10分类训练
- FFmpeg av_dump_format输出的tbn、tbc、tbr、PAR、DAR的含义
- ObjectInputStream序列化反序列化
- ABAP SY标签