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

这是一道关于计算有向图中单源最短路径的题目,给出了Dijkstra算法的应用实例。题目描述了一种情况,要求从特定节点出发,计算到图中所有其他节点的最短路径。输入包括图的节点数、边数和起始节点,输出是最短路径长度。数据范围覆盖了不同规模的图,并提示在某些测试用例中SPFA算法可能不适用,建议使用Dijkstra算法来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目背景

本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。
题目描述

如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。
输入格式

第一行包含三个整数 n,m,sn,m,sn,m,s,分别表示点的个数、有向边的个数、出发点的编号。

接下来 mmm 行每行包含三个整数 u,v,wu,v,wu,v,w,表示一条 u→vu \to vu→v 的,长度为 www 的边。
输出格式

输出一行 nnn 个整数,第 iii 个表示 sss 到第 iii 个点的最短路径,若不能到达则输出 231−12^{31}-1231−1。
输入输出样例
输入 #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

说明/提示

【数据范围】
对于 20%20%20% 的数据:1≤n≤51\le n \le 51≤n≤5,1≤m≤151\le m \le 151≤m≤15;
对于 40%40%40% 的数据:1≤n≤1001\le n \le 1001≤n≤100,1≤m≤1041\le m \le 10^41≤m≤104;
对于 70%70%70% 的数据:1≤n≤10001\le n \le 10001≤n≤1000,1≤m≤1051\le m \le 10^51≤m≤105;
对于 100%100%100% 的数据:1≤n≤1041 \le n \le 10^41≤n≤104,1≤m≤5×1051\le m \le 5\times 10^51≤m≤5×105,保证数据随机。

对于真正 100%100%100% 的数据,请移步 P4779。请注意,该题与本题数据范围略有不同。

#include <iostream>
#include <algorithm>
#include <climits>
#include <cmath>
using namespace std;

const int inf = 1e9;
const int maxn = 5e5 + 10;
struct node{
   
	int v;
	int len;
	int nex;
}edge[maxn 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值