【模板】单源最短路径(弱化版)
题目背景
本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。
题目描述
如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。
输入格式
第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。
接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。
输出格式
一行,包含N个用空格分隔的整数,其中第i个整数表示从点S出发到点i的最短路径长度(若S=i则最短路径长度为0,若从点S无法到达点i,则最短路径长度为2147483647)
输入输出样例
4 6 1 1 2 2 2 3 2 2 4 1 1 3 5 3 4 3 1 4 4
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的文字位置调换
本题根据数据边数m<=500000,邻接矩阵存不下,只能使用静态邻接表存储。
#include<cstdio> #include<queue> using namespace std;const long long inf=2147483647; const int maxn=10005; const int maxm=500005; using namespace std; int n,m,s,num_edge=0; int dis[maxn],vis[maxn],head[maxm]; struct Edge{int next,to,dis; }edge[maxm];void add(int from,int to,int dis){ edge[++num_edge].next=head[from]; edge[num_edge].to=to;edge[num_edge].dis=dis;head[from]=num_edge; }void spfa(){queue<int> q;for(int i=1; i<=n; i++) {dis[i]=inf;vis[i]=0;}q.push(s); dis[s]=0; vis[s]=1;while(!q.empty()){int u=q.front();q.pop(); vis[u]=0;for(int i=head[u];i;i=edge[i].next){int v=edge[i].to; if(dis[v]>dis[u]+edge[i].dis){dis[v]=dis[u]+edge[i].dis;if(vis[v]==0){vis[v]=1;q.push(v);}}}} }int main(){scanf("%d%d%d",&n,&m,&s);for(int i=1; i<=m; i++){int f,g,w;scanf("%d%d%d",&f,&g,&w); add(f,g,w);}spfa();for(int i=1;i<=n;i++){ if(s==i){printf("0 ");}else{printf("%d ",dis[i]);}}return 0; }
转载于:https://www.cnblogs.com/hrj1/p/11160489.html
【模板】单源最短路径(弱化版)相关推荐
- p3371 单源最短路径(弱化版)-java题解-最短路
弱化版传送门: P3371 [模板]单源最短路径(弱化版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通 ...
- p4779 单源最短路径(标准版)-java版
传送门: P4779 [模板]单源最短路径(标准版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P4779 先给 ...
- 最短路——【模板】单源最短路径(弱化版)(dijkstra)
题目链接 最短路--[模板]单源最短路径(弱化版)(dijkstra) 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行包含三个整数 n,m,s,分别表示点 ...
- P3371 【模板】单源最短路径(弱化版)
题目 P3371 [模板]单源最短路径(弱化版) 分析 Dijkstra模板题,只不过这里用了链式前向星 AC代码 #include<cstdio> #include<iostrea ...
- 洛谷 P3371 【模板】单源最短路径(弱化版)【最短路】【spfa】
洛谷 P3371 [模板]单源最短路径(弱化版) 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 洛谷 P3371 [模板]单源最短路径(弱化版) ...
- 洛谷_P3371 【模板】单源最短路径(弱化版)_dijkstra_堆优化
洛谷_P3371 [模板]单源最短路径(弱化版)_dijkstra_堆优化 // dijkstra最短路算法_堆优化 #include<bits/stdc++.h> using names ...
- P4779 【模板】单源最短路径(标准版)
# [模板]单源最短路径(标准版) ## 题目背景 2018 年 7 月 19 日,某位同学在 [NOI Day 1 T1 归程](https://www.luogu.org/problemnew/s ...
- Luogu 3371【模板】单源最短路径
Luogu 3371[模板]单源最短路径 第一次写博客用图论题来试一试 接下来是正文部分 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包 ...
- 55、【图】Dijkstra求最短路径(单源最短路径+边权重为正数)(C/C++版)
算法介绍 Dijkstra算法是基于贪心思想,用于实现只含有正权边的单源最短路径问题,单源路径是从一个固定起始点出发到其余各点的路径. 算法过程: 首先,获取起始点到其余点的距离,然后从起始点出发,每 ...
- Dijkstra算法求解单源最短路径问题
文章目录 一 前言 二 Dijkstra 算法讲解 1. 贪心算法的证明 2. 算法实现说明 3. 初版Dijkstra算法代码 三 时间复杂度优化 1. 优化策略 2. 优化后的代码 四 结语 一 ...
最新文章
- java 泛型多重限制_Java泛型:有界类型参数中的多重继承
- Composer的简单安装与使用
- URI URL 简介区别
- python新手代码-Python的初学者你现在可以自己“看”到代码的运行了!
- swiper如何防止冲突_冲突管理:化冲突为机会的8个谈话技巧,从此告别争吵和冷战...
- Sqoop数据迁移工具的使用
- java 注解的使用
- 修改linux端口22,修改LINUX 默认的22端口
- socket java 客户端_Java基于socket实现的客户端和服务端通信功能完整实例
- 华为认证考试HCIA H12-811 Datacom数通考试真题题库【带答案刷题必过】【第二部分】
- cnn视频下载软件附代码
- 网站百度竞价有展现,点击无咨询原因
- 如何获取网页flash游戏的资源?
- installing selected parcels阶段卡在activating状态
- Sublime Text 3--->中文乱码的解决方法
- linux桌面图标恢复,恢复Linux桌面下方面板上显示最小化的图标的方法
- 惊!Linux居然可以这样破解WiFi密码,竟然是?
- 教您一招解决Word不能复制粘贴问题
- codeforces 957D Riverside Curio
- 群晖Docker映像下载缓慢或失败解决方案
热门文章
- 资源文件的读取和使用
- Tensorflow 2.0的这些新设计,你适应好了吗?
- 基于标准C语言的数字图像处理基本框架(转)
- Java中的occur_time,PLSQL报错: ORA-12170:TNS connect timeout occurred
- java继承的关键字_超级关键字在Java继承中的作用
- yolov4网络结构_重磅更新!YoLov4最新论文!解读YoLov4框架!
- 008_SpringBoot视图层技术jsp
- 刘晓艳2021英语语法句型结构总结1之简单句型结构
- mac搭建appium环境之设置chromdriver
- 微信电脑客户端登陆_电脑截图必须登陆QQ微信?这款截屏软件或许是更好的选择...