
最短路
幽殇默
他时若遂凌云志,敢笑黄巢不丈夫。
展开
-
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 · 559 阅读 · 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 · 107 阅读 · 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 · 140 阅读 · 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 · 174 阅读 · 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 · 177 阅读 · 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 · 150 阅读 · 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 · 154 阅读 · 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 · 267 阅读 · 0 评论