#S8U14P01. 朴素Dijkstra单源距离

朴素Dijkstra单源距离

朴素Dijkstra单源距离

难度:T2

【知识点:Dijkstra最短路】

前置知识:本单元此前讲解的状态、边界与实现。

题目描述

给出有向带权图和源点 ss。边只能沿给定方向通行,路径长度是经过边的权值之和。求从 ss 到每个顶点的最短距离;ss 到自身的距离为 00。

输入格式

其中 nn 为顶点数,顶点编号为 11 到 nn;mm 为随后给出的带权边条数。每条带权边独占一行,依次为 u,v,wu,v,w,表示从 uu 到 vv 的边及权值 ww;无向边可双向通行,有向边只能从 uu 到 vv 通行。

输入nn、mm、ss,再输入mm条有向边uu、vv、ww;允许重边和自环。

输出格式

依次输出源点到11..nn的距离;不可达输出-11。

数据范围

1≤n≤5001\le n\le 500,0≤m≤2000000\le m\le 200000,0≤w≤1090\le w\le 10^9,ss在11..nn。

样例输入

3 3 1
1 3 10
1 2 2
2 3 3

样例输出

0 2 5

样例说明

源点 11 到自身的距离为 00,到 22 的距离为 22;到 33 经过 22 的距离为 2+3=52+3=5,比直接走的 1010 更短。