Description


2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路。

然后呢?

100→60;

Ag→Cu;

最终,他因此没能与理想的大学达成契约。

小 F 衷心祝愿大家不再重蹈覆辙。

题目描述


给定一个 N 个点, M 条有向边的带非负权图,请你计算从 S 出发,到每个点的距离。

数据保证你能从 S 出发到任意点。

Input


第一行为三个正整数 N,M,S 。 第二行起 M 行,每行三个非负整数 ui,vi,wi​ ,表示从 ui​ 到 vi 有一条权值为 wi 的边。

Output


输出一行 N 个空格分隔的非负整数,表示 S 到每个点的距离。

Sample Input


4 6 1

1 2 2

2 3 2

2 4 1

1 3 5

3 4 3

1 4 4

Sample Output


0 2 4 3

Hint


样例解释请参考 数据随机的模板题。

1 ≤ N ≤ 100000;

1 ≤ M ≤ 200000;

S=1;

1 ≤ ui , vi ≤ N ;

0 ≤ wi ≤ 1e9 ,

0 ≤ ∑ wi ≤ 1e9 。

题解


8012年7月19日,SPFA终于还是迎来了被官方审判的日子。

SPFA的光辉 梦幻般消逝。

以前从来没写过堆优dijkstra,SPFA这么香用什么堆优

会了重载运算符之后回头看 发现比以前想象的好写了很多。

反正这就是道模板题。

SPFA很好卡这事大家都知道 但是SPFA真是香了这么多年

  1. #include<iostream>
  2. #include<cstring>
  3. #include<cstdio>
  4. #include<queue>
  5. using namespace std;
  6. #define R register
  7. inline int read()
  8. {
  9. char ch=getchar();
  10. int x=0;
  11. while(ch<'0'||ch>'9')ch=getchar();
  12. while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
  13. return x;
  14. }
  15. struct emm{
  16. int e,f,v;
  17. }a[200007];
  18. int h[100007];
  19. int n,m,s;
  20. void scan()
  21. {
  22. n=read(),m=read(),s=read();
  23. for(R int i=1;i<=m;++i)
  24. {
  25. int u=read(),v=read(),w=read();
  26. a[i].f=h[u];
  27. h[u]=i;
  28. a[i].e=v;
  29. a[i].v=w;
  30. }
  31. return;
  32. }
  33. struct ahh{
  34. int dis,cod;
  35. }aa;
  36. struct cmp{
  37. bool operator()(ahh qaq,ahh qwq){
  38. return qaq.dis>qwq.dis;
  39. }
  40. };
  41. priority_queue<ahh,vector<ahh>,cmp>q;
  42. int d[100007];
  43. bool sf[100007];
  44. void dijkstra()
  45. {
  46. memset(d,127,sizeof(d));
  47. d[s]=0;q.push((ahh){0,s});
  48. while(!q.empty())
  49. {
  50. int x;
  51. do{x=q.top().cod;q.pop();}while(sf[x]&&!q.empty());
  52. sf[x]=1;
  53. for(R int i=h[x];i;i=a[i].f)
  54. if(d[a[i].e]>d[x]+a[i].v)
  55. {
  56. d[a[i].e]=d[x]+a[i].v;
  57. if(!sf[a[i].e])q.push((ahh){d[a[i].e],a[i].e});
  58. }
  59. }
  60. for(R int i=1;i<=n;++i)
  61. printf("%d ",d[i]);
  62. return;
  63. }
  64. int main()
  65. {
  66. scan();
  67. dijkstra();
  68. return 0;
  69. }

「LuoguP4779」 【模板】单源最短路径(标准版)的更多相关文章

  1. [模板]单源最短路径(Dijkstra)

    如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 主要还是再打一遍最短路,这种算法我用的不多... #include<bits/stdc++.h> using namesp ...

  2. 【洛谷 p3371】模板-单源最短路径(图论)

    题目:给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 解法:spfa算法. 1 #include<cstdio> 2 #include<cstdlib> 3 #in ...

  3. 洛谷P3371单源最短路径Dijkstra版(链式前向星处理)

    首先讲解一下链式前向星是什么.简单的来说就是用一个数组(用结构体来表示多个量)来存一张图,每一条边的出结点的编号都指向这条边同一出结点的另一个编号(怎么这么的绕) 如下面的程序就是存链式前向星.(不用 ...

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

    P4779 [模板]单源最短路径(标准版) 求单源最短路, 输出距离 Solution \(nlogn\) 堆优化 \(Djs\) Code #include<iostream> #inc ...

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

    洛谷 P4779[模板]单源最短路径(标准版) 题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 10 ...

  6. 洛谷 P4779 【模板】单源最短路径(标准版) 题解

    P4779 [模板]单源最短路径(标准版) 题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 100 ...

  7. luoguP4779 【模板】单源最短路径

    题目描述 单源最短路径模板. 使用 SPFA 肯定是不行的啦,网格图hack. 所以我们使用 Dijkstra 算法. 这里有一篇写的很好的 blog,无必要赘述.最后贴上代码. #include&l ...

  8. 洛谷P4779 【模板】单源最短路径

    P4779 [模板]单源最短路径(标准版) 题目链接 https://www.luogu.org/problemnew/show/P4779 题目描述 给定一个 N个点,M条有向边的带非负权图,请你计 ...

  9. 洛谷P3371 【模板】单源最短路径

    P3371 [模板]单源最短路径 282通过 1.1K提交 题目提供者HansBug 标签 难度普及/提高- 提交  讨论  题解 最新讨论 不萌也是新,老司机求带 求看,spfa跑模板40分 为什么 ...

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

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

随机推荐

  1. WEB学习-CSS基础选择器

    基础选择器 标签选择器 就是标签的名字. • <h1>前端与移动开发<span>1期班</span>基础班</h1> css: • <style ...

  2. 下载安装webstrom及激活

    太久没在新电脑上安装websrtom,又有点忘了咋激活. 一.安装 1.直接在浏览器搜索webstrom,打开官网,直接点击download.如下图 2.打开安装包,开始安装,直接点击 next 3. ...

  3. ROS下使用ASUS Xtion Pro Live

    一.ROS官网hydro版本OpenNI安装 3. Installation 3.1 Ubuntu installation To install only openni_camera: sudo a ...

  4. springboot整合mybatis+jetty笔记以及遇到的问题

    图文创建一个springboot Demo(IDEA创建)+目录图+返回json springboot创建参考 pom.xml <dependencies> <!--<depe ...

  5. HSSF生成excel文件损坏

    一开始我的代码是这样的: 然后打开创建的好的excel文件出现下面的问题:,, 这里改下代码就行,其实也不用改,添加下sheet就行,就是一开始是空的,没sheet,所以可能打不开,现在至少要创建一个 ...

  6. android 圆形按钮

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  7. 【postMan】发送post请求,返回错误码415

    解决方法: 参看:https://www.cnblogs.com/spec-dog/p/3731279.html 将Request的Content-Type:application/json;char ...

  8. git log 查看版本演变历史

    1.查看git操作历史 $ git log  #git 查看git操作历史 $ git log  --oneline #git 简洁的查看git变更记录 $ git log -n4  --onelin ...

  9. 嵌入式程序员应知道的0x10个C语言Tips

    [1].[代码] [C/C++]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

  10. 算法和流程控制 --《高性能JavaScript》

    总结: 1.for, while, do-while循环性能相当,并没有一种循环类型明显快于或满于其他类型. 2.避免使用for-in循环,除非要遍历一个属性数量未知的对象. 3.改善循环性能的最佳形 ...