![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
最短路径算法
单源最短路径,迪杰斯特拉算法
深巷wls
平平无奇
展开
-
P2910Clear And Present Danger S(Floyd算法)C++
P2910 [USACO08OPEN]Clear And Present Danger S题目大致是说有一堆岛,岛之间有海盗,因此每一条边都有一个危险指数(权重),给出一段必须经过的路线,求从一号小岛走到N号小岛最小的危险指数是多少。思路就是用弗洛伊德跑一遍,然后根据必须经过的路线求一下危险指数#include<bits/stdc++.h>//万能头using namespace std;int n,m,ans=0;//计数器int dis[101][101],a[10001];原创 2021-07-21 17:54:33 · 336 阅读 · 0 评论 -
P2888 Cow Hurdles S(floyd算法)C++
P2888 [USACO07NOV]Cow Hurdles S用佛洛依德进行新状态转移时,因为是以k作为中间点,所以牛跨过的最高高度是max(d[i][k],d[k][j]),但是在i->j的整条路径上,跨过的最高高度应该最小,所以最后要取一个MIN,即d[i][j]=min(max(d[i][k],d[k][j]),d[i][j]);输入:5 6 31 2 123 2 81 3 52 5 33 4 42 4 83 41 25 1输出:48-1#include原创 2021-07-21 17:43:11 · 194 阅读 · 0 评论 -
P1339 Heat Wave G(floyd算法)C++
P1339 [USACO09OCT]Heat Wave G输入:7 11 5 42 4 21 4 37 2 23 4 35 7 57 3 36 1 16 3 42 4 35 6 37 2 1输出:7直接floyd算法走起:#include <iostream>#include <cstring>using namespace std;int c,t,ts,te,ti,dis[2501],f[2501][2501],fi,d;bool原创 2021-07-21 17:07:39 · 125 阅读 · 0 评论 -
P3371 【模板】单源最短路径(弱化版)
P3371 【模板】单源最短路径(弱化版)输入样例:4 6 11 2 22 3 22 4 11 3 53 4 31 4 4输出:0 2 4 3#include<iostream>using namespace std;int head[100000],cnt;long long ans[1000000];bool vis[1000000];int m,n,s;struct edge{ int to; int nextt; int wei;}原创 2021-07-19 17:28:19 · 398 阅读 · 0 评论 -
1223: 最短路(dijkstra算法)
输入第一行两个正整数n,m用空格隔开(n≤100,m≤1000)代表n个顶点,m条边。接下来m行每行三个整数u,v,w代表有一条权值为w的边从u到v,(1≤u,v≤n,1≤w≤100000)可能含有重边。样例解释如上。输出一行n个数,含义如题目描述。样例输入6 101 2 33 4 22 4 71 3 41 4 31 5 102 5 45 6 55 3 22 6 1样例输出 0 3 4 3 7 4#include<bits/stdc++.h>using.原创 2021-05-24 20:24:03 · 370 阅读 · 0 评论 -
1562: PUBG(dijkstra算法)
1562: PUBG时间限制: 1 Sec 内存限制: 128 MB就是求单源最短路,迪杰斯特拉算法原创 2021-05-24 15:40:23 · 158 阅读 · 1 评论 -
第十二届蓝桥杯C++ E.路径(Dijkstra迪杰斯特拉算法)
E、路径【问题描述】小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。小蓝的图由 2021 个结点组成,依次编号 1 至 2021。对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无向边,长度为 24;结点 15 和结点原创 2021-05-23 11:32:14 · 589 阅读 · 0 评论 -
迪杰斯特拉算法
时间复杂度O(n^2)迪杰斯特拉算法const int INT = 32767;const int MAX = 10;int dis[MAX];int path[MAX];int A[MAX][MAX];void Dijk(int v){ bool S[MAX]; // 判断是否已存入该点到S集合中 int n=MAX; for(int i=1; i<=n; ++i) {原创 2021-05-23 11:24:40 · 88 阅读 · 1 评论