题目背景

本题测试数据为随机数据,在考试中可能会出现构造数据让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的文字位置调换

本题根据数据边数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

【模板】单源最短路径(弱化版)相关推荐

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

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

  2. p4779 单源最短路径(标准版)-java版

    传送门: P4779 [模板]单源最短路径(标准版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P4779 先给 ...

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

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

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

    题目 P3371 [模板]单源最短路径(弱化版) 分析 Dijkstra模板题,只不过这里用了链式前向星 AC代码 #include<cstdio> #include<iostrea ...

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

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

  6. 洛谷_P3371 【模板】单源最短路径(弱化版)_dijkstra_堆优化

    洛谷_P3371 [模板]单源最短路径(弱化版)_dijkstra_堆优化 // dijkstra最短路算法_堆优化 #include<bits/stdc++.h> using names ...

  7. P4779 【模板】单源最短路径(标准版)

    # [模板]单源最短路径(标准版) ## 题目背景 2018 年 7 月 19 日,某位同学在 [NOI Day 1 T1 归程](https://www.luogu.org/problemnew/s ...

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

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

  9. 55、【图】Dijkstra求最短路径(单源最短路径+边权重为正数)(C/C++版)

    算法介绍 Dijkstra算法是基于贪心思想,用于实现只含有正权边的单源最短路径问题,单源路径是从一个固定起始点出发到其余各点的路径. 算法过程: 首先,获取起始点到其余点的距离,然后从起始点出发,每 ...

  10. Dijkstra算法求解单源最短路径问题

    文章目录 一 前言 二 Dijkstra 算法讲解 1. 贪心算法的证明 2. 算法实现说明 3. 初版Dijkstra算法代码 三 时间复杂度优化 1. 优化策略 2. 优化后的代码 四 结语 一 ...

最新文章

  1. java 泛型多重限制_Java泛型:有界类型参数中的多重继承
  2. Composer的简单安装与使用
  3. URI URL 简介区别
  4. python新手代码-Python的初学者你现在可以自己“看”到代码的运行了!
  5. swiper如何防止冲突_冲突管理:化冲突为机会的8个谈话技巧,从此告别争吵和冷战...
  6. Sqoop数据迁移工具的使用
  7. java 注解的使用
  8. 修改linux端口22,修改LINUX 默认的22端口
  9. socket java 客户端_Java基于socket实现的客户端和服务端通信功能完整实例
  10. 华为认证考试HCIA H12-811 Datacom数通考试真题题库【带答案刷题必过】【第二部分】
  11. cnn视频下载软件附代码
  12. 网站百度竞价有展现,点击无咨询原因
  13. 如何获取网页flash游戏的资源?
  14. installing selected parcels阶段卡在activating状态
  15. Sublime Text 3--->中文乱码的解决方法
  16. linux桌面图标恢复,恢复Linux桌面下方面板上显示最小化的图标的方法
  17. 惊!Linux居然可以这样破解WiFi密码,竟然是?
  18. 教您一招解决Word不能复制粘贴问题
  19. codeforces 957D Riverside Curio
  20. 群晖Docker映像下载缓慢或失败解决方案

热门文章

  1. 资源文件的读取和使用
  2. Tensorflow 2.0的这些新设计,你适应好了吗?
  3. 基于标准C语言的数字图像处理基本框架(转)
  4. Java中的occur_time,PLSQL报错: ORA-12170:TNS connect timeout occurred
  5. java继承的关键字_超级关键字在Java继承中的作用
  6. yolov4网络结构_重磅更新!YoLov4最新论文!解读YoLov4框架!
  7. 008_SpringBoot视图层技术jsp
  8. 刘晓艳2021英语语法句型结构总结1之简单句型结构
  9. mac搭建appium环境之设置chromdriver
  10. 微信电脑客户端登陆_电脑截图必须登陆QQ微信?这款截屏软件或许是更好的选择...