单源最短路径

luogu 3371

题目大意:

求出一个点到其他点的最短路

原题:

题目背景

本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。

题目描述

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

输入输出格式

输入格式:

第一行包含三个整数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。保证数据随机。
对于真正 100% 的数据,请移步 P4779。请注意,该题与本题数据范围略有不同。

样例说明:


图片1到3和1到4的文字位置调换

解题思路:

用SPFA求出起点到其他点的最短路,然后循环一遍输出即可

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;
int n,m,ks,x,y,s,now,head[10005],b[10005],p[10005];
struct rec
{int to,l,next;
}a[500001];
int main()
{scanf("%d %d %d",&n,&m,&ks);//输入for (int i=1;i<=m;++i){scanf("%d %d %d",&x,&y,&s);a[i].to=y;//链表存法a[i].l=s;a[i].next=head[x];head[x]=i;}fill(b+1,b+1+n,2147483647);//处值queue<int> d;//STL队列d.push(ks);//入队b[ks]=0;//预处理p[ks]=1;while (!d.empty())//不为空{now=d.front();//取出来d.pop();//出队for (int i=head[now];i;i=a[i].next)//连接此点的每一条边if (b[now]+a[i].l<b[a[i].to])//更优{b[a[i].to]=b[now]+a[i].l;//代替if (!p[a[i].to])//判断是否需要入队{d.push(a[i].to);p[a[i].to]=1;}}p[now]=0;//清零}for (int i=1;i<=n;++i)if (i==ks) printf("0 ");//判断else printf("%d ",b[i]);//输出
}

【最短路】【SPFA】单源最短路径 (luogu 3371)相关推荐

  1. SPFA单源最短路径算法

    我们用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G.我们采取的方法是动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开 ...

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

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

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

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

  4. p3371 单源最短路径(弱化版)-java题解-最短路

    弱化版传送门: P3371 [模板]单源最短路径(弱化版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通 ...

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

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

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

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

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

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

  8. 最短路——【模板】单源最短路径(弱化版)(dijkstra)

    题目链接 最短路--[模板]单源最短路径(弱化版)(dijkstra) 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行包含三个整数 n,m,s,分别表示点 ...

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

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

最新文章

  1. DVWA提示Unable to connect to the database.
  2. 春运渡劫!Python给我抢回家的火车票
  3. Axure RP Extension for Chrome安装
  4. 查看windows 端口进程
  5. 《老子》第八十一章 信言不美,美言不信
  6. HDOJ/HDU 2566 统计硬币(公式~遍历~)
  7. JSP中文及传中文参数乱码解决方法小结
  8. 工作中应用计算机,浅谈计算机在我国计工作中的应用与发展.doc
  9. 统计学习方法9—EM算法
  10. DataSet DataTable DataReader DataAdapter之间的区别
  11. 医院所用到的信息系统的缩写、定义,持续更新
  12. java输入、输出流的简单入门
  13. Charles抓包微信小程序数据
  14. 在linux上运行爬虫任务报错:Overridden settings******
  15. matlab洛伦兹吸引子,用Matlab求解洛伦兹方程
  16. faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException问题解决
  17. Mac本,pip命令下载速度慢怎么办,这里有方案
  18. 将js中Ajax设置为同步请求
  19. 教你在微信头像上加口号,很实用!
  20. Wyn Enterprise 核心功能:行业领先的在线数据报表设计体验

热门文章

  1. stm32烧不进去程序_STM32的FLASH和SRAM的使用情况分析
  2. aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...
  3. easyui 动态设置单元格控件_动态显示最大最小值的折线图
  4. 机器学习之格式变化——reshape(-1,1)
  5. python elasticsearch查询_python 查询Elasticsearch的小例子
  6. DEV-C上的报错 Process exited after 4.03 seconds with return value 3221225725
  7. 高等数学上-赵立军-北京大学出版社-题解-练习2.5
  8. [蓝桥杯2019初赛]最大降雨量-模拟
  9. Sumsets POJ - 2229(计数dp)
  10. 数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc-icoding