#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模板的更多相关文章

  1. 最短路(floyd/dijkstra/bellmanford/spaf 模板)

    floyd/dijkstra/bellmanford/spaf 模板: 1. floyd(不能处理负权环,时间复杂度为O(n^3), 空间复杂度为O(n^2)) floyd算法的本质是dp,用dp[k ...

  2. 最短路-SPAF模板

    以hdu1874畅通工程续为例 #include<iostream> #include<cstring> #include<cstdio> #include< ...

  3. THE MATRIX PROBLEM

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  4. King

    King Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

  5. Intervals

    Intervals Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  6. Cycling

    Cycling Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  7. 最短路spaf及dijkstra模板

    spaf的双端队列优化: #include<bits/stdc++.h> #define ll long long const ll maxn=210000; using namespac ...

  8. Jade模板引擎让你飞

    写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...

  9. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

随机推荐

  1. connect(mapStateToProps,mapDispatchToProps) 的写法

    1.写法 import { connect } from 'redux'; import { loading, asyncRequset } from '../../actions/common'; ...

  2. hdu 5311 Hidden String 字符串

    BC一周年的题.这道题做比赛的时候A了小数据,终于评判的时候还是挂了,看来还是不认真思考的问题啊.交的时候 都没有信心过肯定是不行的.认真思考.敲一发,有信心过才是真正的acmer.赛后认真想了想,发 ...

  3. iOS UITableView表视图滚动隐藏UINavigationController导航栏

    UITableView 继承于UIScrollView 所以UIScrollView 的代理方法相同适用于UITableView 中 隐藏导航栏的方法为: self.navigationControl ...

  4. 每秒处理3百万请求的Web集群搭建-如何生成每秒百万级别的 HTTP 请求?

    本文是构建能够每秒处理 3 百万请求的高性能 Web 集群系列文章的第一篇.它记录了我使用负载生成器工具的一些经历,希望它能帮助每一个像我一样不得不使用这些工具的人节省时间. 负载生成器是一些生成用于 ...

  5. timedelta

    from datetime import datetime start="09:35:23" end="10:23:00" start_dt = datetim ...

  6. SUSE11SP3--安装svn

    SUSE上安装新版本的subversion是一件很麻烦的事情,涉及到的依赖太多,包括需要更新部分工具的版本. 为了以较小的代价安装subversion,我决定在SUSE11下安装 subversion ...

  7. python得到今天前的七天每天日期

    import datetime d = datetime.datetime.now() def day_get(d): # 通过for 循环得到天数,如果想得到两周的时间,只需要把8改成15就可以了. ...

  8. Atitit.ui控件---下拉菜单选择控件的实现select html

    Atitit.ui控件---下拉菜单选择控件的实现select   html 1. 调用& model的实现 1 2. -----select.jsp------ 1 1. 调用& m ...

  9. PHP命名空间规则解析及高级功能3

    PHP命名空间规则解析及高级功能 -- : 来源:中国站长站综合 编辑:水色皇朝[纠错]1人评论 A-A+ 怎么开淘宝店 网站优化方法 创业如何获得投资 怎么做微商 最新LOL活动 日前发布的PHP ...

  10. 纯真IP数据库解析Delphi D10.1下正常使用

    直接一个单元,代码分享出来. unit   Net.IPLocation; interface uses System.Classes, System.SysUtils, Winapi.WinSock ...