SPAF模板
#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio> #define INF 0x3f3f3f
using namespace std; const int L = ; struct Edge{
int to;
int next;
int dis;
}e[L*];
int n,m,s;
int dist[L];
bool tag[L];
int num[L];
int head[L];
bool SPAF(int v0)
{
queue<int> q;
dist[v0]=;
q.push(v0);
num[v0]++;
tag[v0]=true;
while(!q.empty())
{
int t=q.front();
q.pop();
tag[t]=false;
for(int i=head[t];i!=-;i=e[i].next)
{
int v=e[i].to;
if(dist[v]>dist[t]+e[i].dis)
{
dist[v]=dist[t]+e[i].dis;
if(!tag[v])
{
tag[v]=true;
q.push(v);
num[v]++;
if(num[v]>n) return false;
}
}
}
}
return true;
} int main()
{
cin>>n>>m>>s;
int u,v,w;
for(int i=;i<=n;i++)
{
head[i]=-;
dist[i]=INF;
tag[i]=false;
num[i]=;
}
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
e[i].to=v;
e[i].dis=w;
e[i].next=head[u];
head[u]=i;
}
if(SPAF(s))
{
for(int i=;i<=n;i++)
if(dist[i]<INF)
cout<<dist[i]<<endl;
else
cout<<"NO PATH"<<endl;
}
return ;
}
SPAF模板的更多相关文章
- 最短路(floyd/dijkstra/bellmanford/spaf 模板)
floyd/dijkstra/bellmanford/spaf 模板: 1. floyd(不能处理负权环,时间复杂度为O(n^3), 空间复杂度为O(n^2)) floyd算法的本质是dp,用dp[k ...
- 最短路-SPAF模板
以hdu1874畅通工程续为例 #include<iostream> #include<cstring> #include<cstdio> #include< ...
- THE MATRIX PROBLEM
THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- King
King Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...
- Intervals
Intervals Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- Cycling
Cycling Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 最短路spaf及dijkstra模板
spaf的双端队列优化: #include<bits/stdc++.h> #define ll long long const ll maxn=210000; using namespac ...
- Jade模板引擎让你飞
写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...
- ABP入门系列(2)——通过模板创建MAP版本项目
一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...
随机推荐
- RMQ 算法入门
1. 概述 RMQ(Range Minimum/Maximum Query).即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A ...
- 关于华为x1 7.0无法从eclipse发布的更新as发布的apk
目前只在华为x1 7.0手机上发现这个问题,坑大了. MediaPad 10 FHD 华为这款可以安装. HUAWEI G525-U00 华为这款也可以安装. 目前公司就这几款华为手机了. 原因是 在 ...
- Visual studio之C# 重新定义Messbox的显示窗口位置
背景 当前做的APP需要新建一个设置窗口,该设置窗口会出现在靠近屏幕边缘位置,但主窗口铺满屏幕,设置窗口会弹出一些讯息,但默认情况下Messagebox窗口会居中于主窗口,这不太符合要求,正常应该居中 ...
- Docker Container同时启动多服务 supervisor
Docker Container同时启动多服务 转载请注明来自:http://blog.csdn.net/wsscy2004 昨天踩了个天坑,我有一个基本的镜像centos6.5+ssh,是通过Doc ...
- 常见SQL Server导入导出数据的几个工具
摘自:http://www.cnblogs.com/chenxizhang/archive/2011/06/09/2076542.html 在我们的日常工作中,与数据库打交道的机会越来越多.这一篇文章 ...
- Python-代码对象
可调用的对象是python执行环境中最重要的部分,python语句,赋值,表达式,模块等,这些 对象只是构成可执行代码块的拼图的很少的一部分,而这些代码块被称为代码对象. 每个可调用的对象的核心都 ...
- 前端资源管理工具sourcetree
https://www.sourcetreeapp.com/
- sql getdate()生成单据号
select replace( replace( replace( replace(convert(varchar(23),getdate(),121),'-',''),':',''),' ','') ...
- Oracle 动态sql 实现方式
/******************************************************************* Sample Program 10: Dynamic SQL ...
- win7系统如何配置JAVA环境变量
1.在“计算机”右击选择“属性” 2.点击“高级系统设置” 3.点击“环境变量” 4.点击系统变量下面的“新建” (1)新建->变量名:JAVA_HOME变量值 C:\Program Files ...