#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. php创建对象。真!变!态!

    PHP创建类的方式,真是够变态,以下是创建方式: 假设类: class SomeClass {//....} 创建对象: 1.直接通过类名实例化 $obj1 = new SomeClass(); 这种 ...

  2. vs2017搭建自己的nuget服务器

    准备环境 vs2017 第一步  创建一个新的asp.net 空网站 .net框架使用4.6以上版本 (或者在第二部中使用低版本的nuget server) 第二步  打开nuget包管理器 搜索nu ...

  3. JS JSOP跨域请求实例详解

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题.这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下 ...

  4. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. mysql启动与关闭

    撰于:http://wenku.baidu.com/link?url=QV3mEJWnU4c8VZPjKGxz4A8gSmdjO2HZY7n963UaVx4l_uPKrh16tGxLyqjf5i3MA ...

  6. zookeeper(五):Zookeeper中的Access Control(ACL)

    概述 传统的文件系统中,ACL分为两个维度,一个是属组,一个是权限,子目录/文件默认继承父目录的ACL.而在Zookeeper中,node的ACL是没有继承关系的,是独立控制的. Zookeeper的 ...

  7. OSGi规范概要

    目前最新的OSGi规范是2012年7月发布的Release 5,Version5.0(后文简称为R5.0)版本,该规范定义了Java模块化系统所涉及的各种场景(开发.打包.部署.更新和交互等),以及其 ...

  8. DOCTYPE 与浏览器模式分析

    DOCTYPE 的诞生 DOCTYPE,或者称为 Document Type Declaration(文档类型声明,缩写 DTD).通常情况下,DOCTYPE 位于一个 HTML 文档的最前面的位置, ...

  9. javascript的弹框

    学习js最先了解到的两种种简单测试手段就是alert("blah");和console.log("blah");了. 除了alert之外,js还有两种弹框 co ...

  10. UITextField/UITextView限制字数

    一,UITextFild限制字数(三步) 1,给textfild添加响应事件,类型为:UIControlEventEditingChanged [self.nickNameFild addTarget ...