博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spfa模板
阅读量:6231 次
发布时间:2019-06-21

本文共 1356 字,大约阅读时间需要 4 分钟。

以hud畅通工程为例:用ford暴力也可ac

样例的图解:

 

spfa算法模板,用一个数组来储存从开始的点到其他点的距离,不断进行松弛操作。

还有用队列来保存与其相邻的点。

void spfa(){    q.push(1);    dis[1] = 0;    vis[1] = 1;    while(!q.empty())    {        int u = q.front();        q.pop();        vis[u] = 0;        for(int i = head[u]; i != -1; i = e[i].next)        {            int v = e[i].v;            if(dis[v] > dis[u] + e[i].w)            {                dis[v] = dis[u] + e[i].w;                if(!vis[v])                {                    vis[v] = 1;                    q.push(v);                }            }        }    }}

 

 

附代码:

#include <iostream>

#include <queue>
#include<cstring>
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
using namespace std;
int save[220][220];
int n,m;
bool vis[220];
int d[220];

int spfa(int s,int t){

mem(vis,false);
mem(d,0x3f);
queue<int> q;
q.push(s);
d[s]=0;
vis[s]=true;
while(!q.empty()){
int c=q.front();
q.pop();
vis[c]=false;
for(int i=0;i<n;i++)
{
if(d[i]>d[c]+save[c][i])
{
d[i]=d[c]+save[c][i];
if(!vis[i])
{
vis[i]=true;
q.push(i);
}
}
}
}
if(d[t]>=inf)
return -1;
return d[t];
}
int main()
{

while(cin>>n>>m)
{
memset(save,0x3f,sizeof(save));
for(int i=0;i<m;i++)
{
int t1,t2,t3;
cin>>t1>>t2>>t3;
if(save[t1][t2]>t3)
{
save[t1][t2]=t3;
save[t2][t1]=t3;
}
}
int s,t;
cin>>s>>t;
cout<<spfa(s,t)<<endl;
}
}

转载于:https://www.cnblogs.com/19990219073x/p/8360888.html

你可能感兴趣的文章
为什么都不写博
查看>>
希腊字母表
查看>>
httpd配置文件httpd.conf规则说明和一些基本指令
查看>>
python中self cls init的理解
查看>>
java:类集操作总结
查看>>
Flake8学习
查看>>
SpringBoot项目eclipse运行正常maven install打包启动后报错ClassNotFoundException
查看>>
ASP.NET Core的身份认证框架IdentityServer4(9)-使用OpenID Connect添加用户认证
查看>>
[Python] String Formatting
查看>>
lapis 处理接收到的json 数据
查看>>
【spring boot logback】日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么...
查看>>
Ad Hoc Distributed Queries的启用与关闭
查看>>
java工具类POI导出word
查看>>
openwrt使用list
查看>>
shell语言
查看>>
C++动态分配内存
查看>>
Android Studio工程Gradle编译报错
查看>>
桌面小部件开发
查看>>
Unity3d dll 热更新 基础框架
查看>>
spring boot整合mybatis+mybatis-plus
查看>>