最短路
幽殇默
他时若遂凌云志,敢笑黄巢不丈夫。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P1629 邮递员送信【最短路+反向建图】
https://www.luogu.com.cn/problem/P1629。 因为是有向的,故去的时候的路线和回来时候的路线不一定是一样的。 去的时候很简单跑一遍Dijkstra()。但是回来的时候。其实考虑回来的时候有最短路,那么意味着我们反向建图跑一下的最短路,就是回来的最短路 。 #include<bits/stdc++.h> using namespace std; const int N=1e5*3+10; typedef pair<int,int> PII; int .原创 2022-03-18 20:21:13 · 596 阅读 · 0 评论 -
1135. 新年好【单源最短路 + 爆搜】
https://www.acwing.com/problem/content/description/1137/ 很容易的想到,枚举5!的全排列,每次Dijkstra()一遍。 这样会超时。我们可以先预处理出,每一个点到其它点的最短路。然后再爆搜,这样的话Dijkstart()只需6此即可。 大大的提升了性能。 #include<bits/stdc++.h> using namespace std; typedef pair<int,int> PII; const int N=1e.原创 2021-10-14 13:21:31 · 137 阅读 · 0 评论 -
903. 昂贵的聘礼【建立虚拟原点】
https://www.acwing.com/problem/content/905/ 建立虚拟原点,枚举所有的区间,在所有的区间中的最短路取一个最小值。 #include<bits/stdc++.h> using namespace std; const int N=1e3+10; int g[N][N],dist[N],st[N],m,n; int level[N],ans=1e9; int Dijkstra(int l,int r) { memset(dist,0x3f,size.原创 2021-10-13 20:38:48 · 161 阅读 · 0 评论 -
920. 最优乘车【根据题意建图求最短路】
https://www.acwing.com/problem/content/description/922/ 根据每一条线,建边,注意是有向边。求最短路,最短路的结果是最少的坐车次数,减1即为最少的换乘次数。 #include<bits/stdc++.h> using namespace std; const int N=1e3+10; int g[N][N],dist[N],st[N]; int n,m; string s,a; void Dijkstra() { memset(d.原创 2021-10-13 19:34:04 · 212 阅读 · 0 评论 -
1126. 最小花费【Dijkstra的变种 求乘法的最大值】
https://www.acwing.com/problem/content/description/1128/ 自己写的做法,不知道为可以,无法证明其严谨性。 就是求最小的花费的汇率,然后DFS按照最短路跑一下求最小的金钱即可 #include<bits/stdc++.h> using namespace std; typedef pair<int,int> PII; const int N=1e5+10; const int M=1e5*2+10; int h[N],e[M],.原创 2021-10-13 18:41:27 · 208 阅读 · 0 评论 -
1127. 香甜的黄油【最短路】
https://www.acwing.com/problem/content/description/1129/ 对于每一个Dijkstra(),然后算总花费中,最小的总花费即可。 #include<bits/stdc++.h> using namespace std; typedef pair<int,int> PII; typedef long long int LL; const int N=1e3*4+10; int dist[N],st[N]; int h[N],e[N].原创 2021-10-13 10:27:20 · 184 阅读 · 0 评论 -
1128. 信使【最短路】
https://www.acwing.com/problem/content/description/1130/ #include<bits/stdc++.h> using namespace std; const int N=1e3+10; int n,m; int g[N][N],dist[N],st[N]; void Dijkstra() { memset(dist,0x3f,sizeof dist); dist[1]=0; for(int i=0;i<n;.原创 2021-10-12 22:55:26 · 187 阅读 · 0 评论 -
1129. 热浪【单源最短路板子题】
https://www.acwing.com/problem/content/1131/ #include<bits/stdc++.h> using namespace std; const int N=2510; int g[N][N],st[N],n,t,startx,endx; int dist[N]; void Dijkstra() { memset(dist,0x3f,sizeof dist); dist[startx]=0; for(int i=0;i<.原创 2021-10-11 20:40:13 · 303 阅读 · 0 评论
分享