公司内网站建设,unity3d培训班多少钱,wordpress服務器,做网站注意什么【模板】单源最短路径#xff08;弱化版#xff09;
题目背景
本题测试数据为随机数据#xff0c;在考试中可能会出现构造数据让SPFA不通过#xff0c;如有需要请移步 P4779。
题目描述
如题#xff0c;给出一个有向图#xff0c;请输出从某一点出发到所有点的最短路…【模板】单源最短路径弱化版
题目背景
本题测试数据为随机数据在考试中可能会出现构造数据让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} ∑w231保证数据随机。
Update 2022/07/29两个点之间可能有多条边敬请注意。
对于真正 100 % 100\% 100% 的数据请移步 P4779。请注意该题与本题数据范围略有不同。
样例说明 图片1到3和1到4的文字位置调换
#includebits/stdc.h
using namespace std;
struct aty{int v,w;
};
vectoraty E[100001];
queueint q;
int n,m,s,dis[100001],u,v,w;
bool vis[100001];
int main(){scanf(%d%d%d,n,m,s);for(int i1;im;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 uq.front();q.pop();vis[u]0;for(int i0;iE[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 i1;in;i){printf(%d ,dis[i]);}return 0;
}