题目描述

如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。

输入输出格式

输入格式:
第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。

接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。

输出格式:
一行,包含N个用空格分隔的整数,其中第i个整数表示从点S出发到点i的最短路径长度(若S=i则最短路径长度为0,若从点S无法到达点i,则最短路径长度为2147483647)

输入输出样例

输入样例#1:
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
输出样例#1:
0 2 4 3
说明

时空限制:1000ms,128M

数据规模:

对于20%的数据:N<=5,M<=15

对于40%的数据:N<=100,M<=10000

对于70%的数据:N<=1000,M<=100000

对于100%的数据:N<=10000,M<=500000

样例说明:

分析
spfa+队列优化:
dis[i]表示点s到i的最短路径,一开始dis数组为maxlongint。
1.用队列优化,就可以省略枚举每个点的时间,由O(M^2)变成了O(M)。
2.跑一波spfa,然后输出就好了。

程序:

var
next,ls,s,t,w,p:array[0..500001]of longint;
d:array[0..10001]of longint;
v:array[0..10001]of boolean;
n,m,q,i,j:longint;procedure spfa;
var
head,tail,i:longint;
beginhead:=0;tail:=1;d[q]:=0;v[q]:=true;p[1]:=q;while head<tail dobegininc(head);i:=ls[p[head]];while i>0 dobeginif d[s[i]]+w[i]<d[t[i]] thenbegind[t[i]]:=d[s[i]]+w[i];if v[t[i]]=false thenbeginv[t[i]]:=true;inc(tail);p[tail]:=t[i];end;end;i:=next[i];end;v[p[head]]:=false;end;
end;beginfillchar(next,sizeof(next),0);fillchar(ls,sizeof(ls),0);readln(n,m,q);for i:=1 to m dobeginreadln(s[i],t[i],w[i]);next[i]:=ls[s[i]];ls[s[i]]:=i;end;for i:=1 to n dobegind[i]:=maxlongint;v[i]:=false;end;spfa;for i:=1 to n dowrite(d[i],' ');
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500066.html

单源最短路径(spfa)相关推荐

  1. 图论-单源最短路径算法(拓扑,Dijkstra,Floyd,SPFA)

    前言 单源最短路径是学习图论算法的入门级台阶,但刚开始看的时候就蒙了,什么有环没环,有负权没负权,下面就来总结一下求单源最短路径的所有算法以及其适用的情况. 单源最短路径 设定图中一个点为源点,求其他 ...

  2. 【算法】单源最短路径和任意两点最短路径总结(补增:SPFA)

    [Bellman-Ford算法] [算法]Bellman-Ford算法(单源最短路径问题)(判断负圈) 结构: #define MAX_V 10000 #define MAX_E 50000 int ...

  3. 【最短路】【SPFA】单源最短路径 (luogu 3371)

    单源最短路径 luogu 3371 题目大意: 求出一个点到其他点的最短路 原题: 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779. 题目描述 ...

  4. 洛谷 P3371 【模板】单源最短路径(弱化版)【最短路】【spfa】

    洛谷 P3371 [模板]单源最短路径(弱化版) 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 洛谷 P3371 [模板]单源最短路径(弱化版) ...

  5. 你必须会的--Dijkstra算法--单源最短路径问题

    文章目录 一.算法原理 1.基本原理 2.如何保存最短路径? 二.算法实战一 1.测试 2.结果 二.算法实战2 Input Output Sample Input Sample Output 一.算 ...

  6. 单源最短路径(最短路)

    洛谷--P3371 [模板]单源最短路径(spfa) 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个 ...

  7. 四种不同单源最短路径算法性能比较

    四种不同单源最短路径算法性能比较   一.最短路径问题描述 单源最短路径描述:给定带权有向图G=(V,E),其中每条边的权是非负实数.另外,还给定V中的一个顶点,称之为源.现在要计算从源到其他各顶点的 ...

  8. Luogu 3371【模板】单源最短路径

    Luogu 3371[模板]单源最短路径 第一次写博客用图论题来试一试 接下来是正文部分 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包 ...

  9. 图论(单源最短路径)

    一.基础 1.最短路径问题的形式: 单源最短路径:希望找到从源节点s到每个结点的最短路径: 单目的地最短路径:希望找到从每个结点到给定目的地的最短路径,只需将图的每条边方向翻转过来,就可以转化成单源最 ...

最新文章

  1. 【实用】几个实用的webstorm、IDEA编辑器窗口快捷键设置,Alt+V垂直复制当前窗口,Alt+Shift+V将当前窗口复制到另一边的分割窗口显示,Alt+Shift+M移动当前活动窗口到另一边
  2. MySQL中int、char、varchar的性能浅谈
  3. Client Side Cache 和 Server Side Cache 的区别
  4. MachineLearning(8)-PCA,LDA基础+sklearn 简单实践
  5. 可视化戒烟对身体的影响!从20分钟到15年
  6. gradle 失败 编译项目_maven常见问题处理(3-3)Gradle编译时下载依赖失败解决方法...
  7. GCD三部曲之一---辗转相除法
  8. 在项目中经历生死的系统,才会成熟
  9. C#二进制文件读取序列化与反序列化
  10. 计算机系统结构与组成原理
  11. NT平台ADSL拨号连接密码恢复原理
  12. mp4格式-播放和断点续播
  13. 求顺序表的交集和并集
  14. 【蜂口 | AI人工智能】表情识别——龙鹏 深度学习与人脸图像应用连载(七)...
  15. 最近看到需要去学习的点(持续记录)
  16. C# 绘制直角坐标系
  17. ObjectArx尺寸标注设置
  18. 《小红牛》APP内测功能陆续上线
  19. 嵌入式驱动编写-点亮LED驱动程序
  20. Kconfig 学习

热门文章

  1. < Android数据存储> 任务二 应用程序数据文件夹里的文件读写
  2. elasticsearch 数据类型_基于 MySQL Binlog 的 Elasticsearch 数据同步实践
  3. VTK修炼之道7_三维场景基本要素:光照
  4. VirtualBox虚拟机中Ubuntu11.10安装Additions出现 读写错误的解决办法
  5. c#下简单的文件读写
  6. 如何动态改变框架的大小[转]
  7. 35岁前必做10件事 让你少奋斗8年挣足钱
  8. 多态性与虚拟函数一个典型的例子第一步
  9. Python入门学习---第三天
  10. SpringBoot @Configuration •@Import •@Conditional•@ImportResoure基本使用