题目背景

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

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

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

题目描述

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

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

输入格式

第一行为三个正整数 n, m, s。 第二行起 m 行,每行三个非负整数 ui​,vi​,wi​,表示ui​ 到vi​ 有一条权值为wi​ 的有向边。

输出格式

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

注意:这是一个有向图!!! (存成无向图,36分 d了半个小时,结果删了一行代码就ac了)

因为是模版题,其实和标准Dijkstra的思想差不多,具体详解参照 最短路问题-- Dijkstra Choose the best route

 #include <bits/stdc++.h>
 using namespace std;
 ;
 long long n,m,s,t;
 long long u,v,w;
 priority_queue< pair<int ,int > >q; int dis[N],vis[N];
 int read()
 {
     ,a = ;
     char ch = getchar();
     '){
         ;
         ch = getchar();
     }
     '){
         a = a *  + ch - ';
         ch = getchar();
     }
     return x*a;
 }
 struct  node
 {
     int val;
     int to;
     int next;
 }e[N];
 int head [N];
 ;
 void add (int u,int v,int w)
     {
       e[++tot].val=w;
       e[tot].to=v;
       e[tot].next=head[u];
       head[u]=tot;
 }
 void Dijkstra(int S)
 {
     q.push(make_pair(,S)); memset(vis,,;
     while(!q.empty())
     {
         int x = q.top().second;
         q.pop();
         if(vis[x])
             continue;
         vis[x] = ;
         ;i=e[i].next)
         {
             int to1=e[i].to;
             if(dis[to1] > dis[x] + e[i].val)
             {
                 dis[to1] = dis[x] + e[i].val ;
                 q.push(make_pair(-dis[to1],to1));
             }
         }
     }
     return;
 }
 int main()
 {
     n=read();
     m=read();
     s=read();
     ;i <= m;i++)
     {
         u=read();
         v=read();
         w=read();
         add(u,v,w);
     }
     Dijkstra(s);
     ;i <= n;i++)
     cout<<dis[i]<<" ";
     ;
 }

最短路问题--P4779 单源最短路(标准版)Dijkstra堆优化的更多相关文章

  1. 单源最短路模板_SPFA_Dijkstra(堆优化)_C++

    随手一打就是标准的SPFA,默认1号节点为出发点,当然不用 f 判断是否在队里也可以,只是这样更优化一点 void spfa() { int i,x,k; ;i<=n;i++) { d[i]=o ...

  2. 洛谷 P4779 单源最短路径(标准版) 题解

    题面 这道题就是标准的堆优化dijkstra: 注意堆优化的dijkstra在出队时判断vis,而不是在更新时判断vis #include <bits/stdc++.h> using na ...

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

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

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

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

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

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

  6. 单源最短路模板(dijkstra)

    单源最短路(dijkstra算法及堆优化) 弱化版题目链接 n^2 dijkstra模板 #include<iostream> #include<cstdio> #includ ...

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

    原题链接 https://www.luogu.org/problemnew/show/P4779 若还未食用弱化版的同学请先做这个qwq https://www.luogu.org/problemne ...

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

    题目描述 给定一个$n$个点,$m$条有向边的带非负权图,请你计算从$s$出发,到每个点的距离. 数据保证你能从$s$出发到任意点. 输入格式 第一行为三个正整数$n,m,s$. 第二行起$m$行,每 ...

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

    题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 100→60 Ag→Cu 最终,他因此没能与理想的大 ...

随机推荐

  1. maven详解之 pom.xml 解释

    <project>:pom.xml的根标签,一个maven项目用一对<peoject></project>标签包裹. <modelVersion>4.0 ...

  2. canvas绘制表盘时钟

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. python django Form表单

    Django 拥有自己独立的表单功能块,可以完成: 1.表单的定义 2.表单的校验 3.表单的前端样式 等功能,方便我们开发,那么接下来,我们看一下表单的定义 首先我们确定我们要编写的功能,一个提供给 ...

  4. Oracle SQL存储过程结构、异常处理示例

    -- 存储过程结结构. -- EXCeption不是存储过程必须部分,可以用作本存储过程的异常处理,但如果没有异常处理,出了异常将会终止程序 CREATE PROCEDURE procedure_na ...

  5. Python基础笔记:函数:调用函数、定义函数、函数的参数、递归函数

    一.定义一个求二元一次方程的根的函数 #Sublime Text import math def ee(a,b,c): delta=b*b-4*a*c if delta<0: return 'n ...

  6. MyBatis parameterType、resultType的数据类型

    parameterType.resultType的数据类型要写全限定类名或者别名. mybatis已经给常用的数据类型起好了别名,参考mybatis.pdf  3.1.1小节: 基本数据类型很少用,一 ...

  7. 九、JavaScript之分号使用,支持一行多语句

    一.代码如下 二.执行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...

  8. Spark 2.x 在作业完成时却花费很长时间结束

    使用 Apache Spark 2.x 的时候可能会遇到这种现象:虽然 Spark Jobs 已经全部完成了,但是程序却还在执行.比如我们使用 Spark SQL 去执行一些 SQL,这个 SQL 在 ...

  9. HDU 4952 Number Transformation 多校8 机智数学

    哎.这个题想了好久,状态不对啊...一个大家都出的题..当时想到肯定是可以有什么规律来暴力,不用算到10的10次方 对于某个k,x.从1到k循环,每次求一个新的x,这个x要大于等于原x,并且要是i的倍 ...

  10. 如何下载安装python安装包

    1.从360搜索python,找到“python官网”              python官网地址:https://www.python.org/ 2.进入python官网,出现下面的页面 3.点 ...