【最短路】【SPFA】单源最短路径 (luogu 3371)
单源最短路径
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)相关推荐
- SPFA单源最短路径算法
我们用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G.我们采取的方法是动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开 ...
- Luogu 3371【模板】单源最短路径
Luogu 3371[模板]单源最短路径 第一次写博客用图论题来试一试 接下来是正文部分 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包 ...
- 洛谷 P3371 【模板】单源最短路径(弱化版)【最短路】【spfa】
洛谷 P3371 [模板]单源最短路径(弱化版) 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 洛谷 P3371 [模板]单源最短路径(弱化版) ...
- p3371 单源最短路径(弱化版)-java题解-最短路
弱化版传送门: P3371 [模板]单源最短路径(弱化版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通 ...
- 【算法】单源最短路径和任意两点最短路径总结(补增:SPFA)
[Bellman-Ford算法] [算法]Bellman-Ford算法(单源最短路径问题)(判断负圈) 结构: #define MAX_V 10000 #define MAX_E 50000 int ...
- 单源最短路径(最短路)
洛谷--P3371 [模板]单源最短路径(spfa) 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个 ...
- 图论-单源最短路径算法(拓扑,Dijkstra,Floyd,SPFA)
前言 单源最短路径是学习图论算法的入门级台阶,但刚开始看的时候就蒙了,什么有环没环,有负权没负权,下面就来总结一下求单源最短路径的所有算法以及其适用的情况. 单源最短路径 设定图中一个点为源点,求其他 ...
- 最短路——【模板】单源最短路径(弱化版)(dijkstra)
题目链接 最短路--[模板]单源最短路径(弱化版)(dijkstra) 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行包含三个整数 n,m,s,分别表示点 ...
- 四种不同单源最短路径算法性能比较
四种不同单源最短路径算法性能比较 一.最短路径问题描述 单源最短路径描述:给定带权有向图G=(V,E),其中每条边的权是非负实数.另外,还给定V中的一个顶点,称之为源.现在要计算从源到其他各顶点的 ...
最新文章
- DVWA提示Unable to connect to the database.
- 春运渡劫!Python给我抢回家的火车票
- Axure RP Extension for Chrome安装
- 查看windows 端口进程
- 《老子》第八十一章 信言不美,美言不信
- HDOJ/HDU 2566 统计硬币(公式~遍历~)
- JSP中文及传中文参数乱码解决方法小结
- 工作中应用计算机,浅谈计算机在我国计工作中的应用与发展.doc
- 统计学习方法9—EM算法
- DataSet DataTable DataReader DataAdapter之间的区别
- 医院所用到的信息系统的缩写、定义,持续更新
- java输入、输出流的简单入门
- Charles抓包微信小程序数据
- 在linux上运行爬虫任务报错:Overridden settings******
- matlab洛伦兹吸引子,用Matlab求解洛伦兹方程
- faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException问题解决
- Mac本,pip命令下载速度慢怎么办,这里有方案
- 将js中Ajax设置为同步请求
- 教你在微信头像上加口号,很实用!
- Wyn Enterprise 核心功能:行业领先的在线数据报表设计体验
热门文章
- stm32烧不进去程序_STM32的FLASH和SRAM的使用情况分析
- aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...
- easyui 动态设置单元格控件_动态显示最大最小值的折线图
- 机器学习之格式变化——reshape(-1,1)
- python elasticsearch查询_python 查询Elasticsearch的小例子
- DEV-C上的报错 Process exited after 4.03 seconds with return value 3221225725
- 高等数学上-赵立军-北京大学出版社-题解-练习2.5
- [蓝桥杯2019初赛]最大降雨量-模拟
- Sumsets POJ - 2229(计数dp)
- 数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc-icoding