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

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

题目背景

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

题目描述

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

输入格式

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

接下来 m m m 行每行包含三个整数 u , v , w u,v,w u,v,w,表示一条 u → v u \to v u→v 的,长度为 w w w 的边。

输出格式

输出一行 n n n 个整数,第 i i i 个表示 s s s 到第 i i i 个点的最短路径,若不能到达则输出 2 31 − 1 2^{31}-1 231−1。

样例 #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 ≤ 5 1\le n \le 5 1≤n≤5, 1 ≤ m ≤ 15 1\le m \le 15 1≤m≤15;

对于 40 % 40\% 40% 的数据: 1 ≤ n ≤ 100 1\le n \le 100 1≤n≤100, 1 ≤ m ≤ 1 0 4 1\le m \le 10^4 1≤m≤104;

对于 70 % 70\% 70% 的数据: 1 ≤ n ≤ 1000 1\le n \le 1000 1≤n≤1000, 1 ≤ m ≤ 1 0 5 1\le m \le 10^5 1≤m≤105;

对于 100 % 100\% 100% 的数据: 1 ≤ n ≤ 1 0 4 1 \le n \le 10^4 1≤n≤104, 1 ≤ m ≤ 5 × 1 0 5 1\le m \le 5\times 10^5 1≤m≤5×105, 1 ≤ u , v ≤ n 1\le u,v\le n 1≤u,v≤n, w ≥ 0 w\ge 0 w≥0, ∑ w < 2 31 \sum w< 2^{31} ∑w<231,保证数据随机。

Update 2022/07/29:两个点之间可能有多条边,敬请注意。

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

样例说明:

图片1到3和1到4的文字位置调换

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
struct aty{
	int v,w;
};
vector<aty> E[100001];
queue<int> q;
int n,m,s,dis[100001],u,v,w;
bool vis[100001];
int main(){
	scanf("%d%d%d",&n,&m,&s);
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&u,&v,&w);
		E[u].push_back({v,w});
	}
	q.push(s);
	for (int i = 1; i <= n; i++)
		dis[i] = 0x7FFFFFFF;
	vis[s]=1;
	dis[s]=0;
	while(!q.empty()){
		int u=q.front();
		q.pop();
		vis[u]=0;
		for(int i=0;i<E[u].size();i++){
			if(dis[E[u][i].v]>dis[u]+E[u][i].w){
				dis[E[u][i].v]=dis[u]+E[u][i].w;
				if(!vis[E[u][i].v]){
					vis[E[u][i].v]=true;
					q.push(E[u][i].v);
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		printf("%d ",dis[i]);
	}
	return 0;
}
相关推荐
凌辰揽月6 分钟前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
lifallen12 分钟前
深入浅出 Arrays.sort(DualPivotQuicksort):如何结合快排、归并、堆排序和插入排序
java·开发语言·数据结构·算法·排序算法
jingfeng51412 分钟前
数据结构排序
数据结构·算法·排序算法
能工智人小辰38 分钟前
Codeforces Round 509 (Div. 2) C. Coffee Break
c语言·c++·算法
kingmax5421200839 分钟前
CCF GESP202503 Grade4-B4263 [GESP202503 四级] 荒地开垦
数据结构·算法
岁忧44 分钟前
LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 上
sql·算法·leetcode
eachin_z2 小时前
力扣刷题(第四十九天)
算法·leetcode·职场和发展
闻缺陷则喜何志丹2 小时前
【强连通分量 缩点 拓扑排序】P3387 【模板】缩点|普及+
c++·算法·拓扑排序·洛谷·强连通分量·缩点
机器学习之心2 小时前
机器学习用于算法交易(Matlab实现)
算法·机器学习·matlab
AL流云。2 小时前
【优选算法】C++滑动窗口
数据结构·c++·算法