洛谷-4779 【模板】单源最短路径(标准版)

该博客主要介绍了如何解决带非负权图的单源最短路径问题,以N个点和M条边的数据为例,从点S出发计算到达所有点的最短距离。输入包括图的节点数、边数及起点S,输出为S到每个点的最短路径长度。题目保证能从S到达任意点,且权值非负,不超过10^9的总和。

题目描述
给定一个 N 个点,M 条有向边的带非负权图,请你计算从 S 出发,到每个点的距离。
数据保证你能从 S 出发到任意点。
输入输出格式
输入格式:
第一行为三个正整数 N,M,S。 第二行起 M 行,每行三个非负整数 ui,vi,wi,表示从 ui 到 v 有一条权值为 wi 的边。
输出格式:
输出一行 N 个空格分隔的非负整数,表示 S 到每个点的距离。

输入输出样例
输入样例#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

说明
样例解释请参考 数据随机的模板题。
1≤N≤100000
1≤M≤200000
S=1;
1≤ui,vi≤N
0≤wi≤109
0≤∑wi≤109

#include<stdio.h>
#include<queue>
#include<cstdlib>
#define N 100003
#define M 200003
#define INF 2147483647
using namespace std;
int head[N]={0};
int next1[M]={0};
int V[M]={0};
bool vis[N]={0};
int W[M]={0};
int tot=0;
int dist[N]={0};
int n=0,m=0,s=0;
void add(int x,int y,int c){
    tot++;
    next1[tot]=head[x];
    V[tot]=y;W[tot]=c;
    head[x]=tot;
}
priority
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值