题目

一个有向图,求一点到所有点的最短距离

输入

4 6 1(4个点,6条边,从1出发)
1 2 2(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

所以我们用SPFA算法,用邻接表


代码

#include<cstdio>
using namespace std;
struct woc{int next,x,y,w;
};
woc a[500001];//邻接表
int n,m,k,state[10001],ls[10001],t,head,tail,f[10001];
bool v[10001];
int main()
{scanf("%d%d%d",&n,&m,&k);state[1]=k;//第一个点for (int i=1;i<=m;i++){scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);a[i].next=ls[a[i].x];ls[a[i].x]=i;//邻接表}for (int i=1;i<=n;i++) f[i]=2147483647;//初始化head=0;tail=1;v[state[1]]=true;//标记f[k]=0;while (head!=tail)//注意不能是<={head++;//出队head=(head-1)%n+1;//循环队列t=ls[state[head]];//读取边while (t!=0){if (f[a[t].x]+a[t].w<f[a[t].y]){f[a[t].y]=f[a[t].x]+a[t].w;//松弛if (!v[a[t].y]){tail++;//入队tail=(tail-1)%n+1;//循环队列state[tail]=a[t].y;v[a[t].y]=true;//标记}}t=a[t].next;//下一条边}v[state[head]]=false;//解封}f[k]=0;for (int i=1;i<=n;i++)printf("%d ",f[i]);//输出
}

洛谷P3371-【模板】单源最短路【SPFA】相关推荐

  1. 单源最短路 SPFA 算法模板

    简介 在图论中,最短路是十分重要的一部分,在很多问题中都有涉及 而现在所讲的 SPFA 算法是十分优秀的算法,时间复杂度为 O(k∗E)O(k*E) 其中 EE 是图的边数,而 kk 是一个常数,一般 ...

  2. 洛谷P1522 Floyd求全源最短路

    分析发现:连边前后 两个联通块本身的直径不被影响 题意所求可以转化为:第一个连通块最大直径 加连边距离 加第二个连通块最大直径 思路如下: 1.Floyd算法分别求出两个牧场内任意两点的距离 2.对两 ...

  3. uva 10099 The Tourist Guide(单源最短路/spfa/dijkstra)

    题目: 链接:点击打开链接 题意: 思路: 代码: #include <iostream> #include <cstring> #include <cstdio> ...

  4. HDU 2066 一个人的旅行(单源最短路SPFA)

    Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还 ...

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

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

  6. Dijkstra模板题——单源最短路径(洛谷 P3371)

    题目选自洛谷P3371 这个数据类型可以将两个数据进行打包,比如 pair<int,int> 就是将两个int型进行打包. 而且使用优先队列时,优先队列会根据你打包的第一个数据进行排序. ...

  7. 模板:Prime最小生成树堆优化 + Dijkstra单源最短路堆优化

    Dijkstra 单源最短路堆优化 #include<bits/stdc++.h> using namespace std; typedef pair<int, int> PI ...

  8. 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图

    题目分析 来源:acwing 分析: 本题难在抽象建图上,这里采用的建图方式是:同一条公交线路上,前面的站点都可以连一条有向边到其后面的站点,且边权都为1. 由于边权都是1,可以用bfs来求最短路. ...

  9. 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路

    题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...

  10. dijkstra邻接表_[力扣743] 带权邻接表的单源最短路

    题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...

最新文章

  1. 周志华教授:AI领域如何做优秀研究并写高水平论文?
  2. SD 模块的几个增强
  3. C#实现动态编译代码
  4. Cocos2dx利用intersectsRect函数检测碰撞
  5. cygwin下如何运行crontab定时脚本?
  6. java常用类需要记吗_java 常用类
  7. 如何让字体大小12px
  8. git clone权限被拒绝
  9. ## java.lang.IllegalStateException:错误 修改
  10. JS-计算日期差值;计算日期之间的月数
  11. 国际期货和国内期货的区别带招商
  12. 当遇到error: stray ‘\241‘ in program错误的解决方法
  13. java 验证手机号_Java使用正则表达式验证手机号和电话号码的方法
  14. 香港--身份证(本国人)正则表达式
  15. cwyw不是有效的加载项_EndNote加载项无法显示怎么办?
  16. tablepage说明文档
  17. 美团面试,360面试 ,滴滴面试,阿里面试,百度面试,京东面试,搜狗面试:
  18. 分解连续自然数的和_将整数分解为连续自然数之和
  19. 个体软件过程(PSP)学习笔记 (未完)
  20. Java ${}修改world内容 并转pdf,亲测可以

热门文章

  1. java io操作_Java 的IO操作(文件的读,写操作)
  2. 数据结构——二叉树的最小深度算法
  3. leetcode199. 二叉树的右视图(层序遍历03)
  4. 二分查找基础概念与经典题目(Leetcode题解-Python语言)二分索引型
  5. 向linux内核增加新的系统调用,为linux内核添加新的系统调用
  6. [MyBatisPlus]雪花算法
  7. [JavaWeb-JDBC]JDBC_快速入门_idea jdbc连接Mysql数据库
  8. 走迷宫-双向bfs解法
  9. Linear world POJ - 2674(弹性碰撞+技巧)
  10. 2011年计算机基础知识试卷,2011年计算机一级考试理论试题:第六部分多选题