最短路
有关最短路问题的题目
明天见A
这个作者很懒,什么都没留下…
展开
-
The Shortest Path in Nya Graph HDU - 4725【最短路】
The Shortest Path in Nya Graph HDU - 4725题目思路:裸的最短路,中间多了个层级的概念,每个层级到他上一个层级与下一个层级距离都是C,假设一共n个点,我们可以用n+1、n+2…储存层级,每个点到所属层级距离为0具体代码如下#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<vector>#defi原创 2021-02-05 15:09:42 · 126 阅读 · 0 评论 -
Tram POJ - 1847【最短路】
Tram POJ - 1847题目思路:直接建图,机翻的题目看了好久才看懂,很简单的一个最短路,把能直接通过的边权赋为0,需要操作之后才能通过的边权赋为1样例大意:3 2 12 2 32 3 12 1 2第一行分别是n、a、b第二行意思是点1能到达两个站点2和3,到2不用转向,到3需要手动转向,下边一样具体代码如下#include<iostream>#include<cstring>#include<cstdio>#include<q原创 2021-02-05 13:14:35 · 120 阅读 · 0 评论 -
通信线路【最短路】
通信线路题目做法:Dijkstra + 二分,题目要求求出第k+1条路的花费,我们把值大于x且不超过k条边的情况进行二分,图片最后是求最短路的同时求出来有几条大于x的边(同时咋就写成宇宙了呜呜呜文件还没保存)具体代码如下#include<iostream>#include<cstring>#include<queue>#include<vector>#define x first#define y secondusing namespac原创 2021-02-05 10:54:49 · 141 阅读 · 0 评论 -
Subway POJ - 2502【最短路】
Subway POJ - 2502题目思路:很裸的最短路,难就难在建图,用邻接表建图时要把边开大点,别看数据范围仅仅200,开了1w都RE,索性开到了10W就AC了具体代码如下#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<cmath>using namespace std;const int N = 510, M = 10原创 2021-02-04 20:29:55 · 154 阅读 · 0 评论 -
Invitation Cards POJ - 1511【最短路】
Invitation Cards POJ - 1511题目思路:建两张图,一张正向一张反向,先在正向图里求一遍一号点到所有点的距离,再在反向图里求一遍,反向图里一号点到所有点的距离的意思是所有点到1号点的最短距离,最后相加和就是答案具体代码如下#include<iostream>#include<queue>#include<cstdio>#include<cstring>#include<vector>#define x fir原创 2021-02-04 15:23:55 · 76 阅读 · 0 评论 -
Arbitrage POJ - 2240【最短路】
Arbitrage POJ - 2240题目相似题目思路:spfa判断正环即可,用map把图建立出来注意:各种数组一定要初始化…具体代码如下#include<iostream>#include<map>#include<queue>#include<string>#include<cstring>using namespace std;const int N = 50;int n, m, cnt;int ans[N原创 2021-02-04 13:17:31 · 96 阅读 · 0 评论 -
Cow Contest POJ - 3660【最短路】
Cow Contest POJ - 3660题目思路:如果一个牛的排位能够确定,那么排名比它高的牛+排名比它低的牛 = n-1,也就是能到达这个点的点 + 这个点能到达的点 = n-1,数据范围较小直接用Floyd就可以,随后用一个数组记录这些信息,再把答案输出具体代码如下#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N = 110, I原创 2021-02-04 12:28:25 · 154 阅读 · 0 评论 -
新年好【最短路】
新年好题目思路:Dijkstra与dfs结合,先求出佳佳和他的五个亲戚分别到别的点的最短路径,然后打表,dfs求全排列直接查表即可具体代码如下#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<vector>#define x first#define y secondusing namespace std;typedef原创 2021-02-04 11:46:44 · 159 阅读 · 0 评论 -
昂贵的聘礼【最短路】
昂贵的聘礼题目思路:看y总的提高课,自己先想了想,但是不知道区间怎么处理,看完之后豁然开朗,每次只用处理一段区间,依次枚举区间结束之后最短的便是需要的最少花费,需要定义一个虚拟远点,我们用0号点来定义,问题就转化成了0号点到1号点的最短路具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 110, INF = 0x3f3f3f3f;int n, m;int g[N原创 2021-02-04 10:18:48 · 71 阅读 · 0 评论 -
最优乘车【最短路】
最优乘车题目思路:建图,把所有能到达的点的路线建成一张边权为1的图,由于边权都为1所以直接bfs即可求最短路具体代码如下#include<iostream>#include<cstring>#include<sstream>#include<queue>using namespace std;const int N = 510;int n, m;bool g[N][N];int dis[N];int stop[N];void原创 2021-02-03 17:02:09 · 126 阅读 · 0 评论 -
Wormholes POJ - 3259【最短路】
Wormholes POJ - 3259题目思路:能见到几秒前的自己说明存在负环,直接spfa判断负环,记得每次都把数组邻接表…之类的初始化注意:起点不一定是从1开始的,所以每个点都应该作为入队起点具体代码如下#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const int N = 510, M = 6000;原创 2021-02-03 15:34:46 · 131 阅读 · 0 评论 -
Currency Exchange POJ - 1860【最短路】
Currency Exchange POJ - 1860题目思路:spfa判断正环,只要存在正环那么就可以无限套利具体代码如下#include<iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const int N = 110, M = N*2;int h[N], e[M], ne[M], idx, cnt[N];doubl原创 2021-02-03 14:30:59 · 102 阅读 · 1 评论 -
Silver Cow Party POJ - 3268【最短路】
Silver Cow Party POJ - 3268题目思路:先用邻接表储存图,再求n次spfa,每次把起始位置到终止位置的距离存储下来,枚举到终止位置时就把终止位置到其余所有点的距离存储下来,最后相加,最大值便是结果具体代码如下#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const int N = 1010,原创 2021-02-03 12:52:17 · 76 阅读 · 0 评论 -
Heavy Transportation POJ - 1797【最短路】
Heavy Transportation POJ - 1797题目思路:最短路问题变形,跟Frogger一样具体代码如下#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N = 1010;int n, m;int g[N][N];int dis[N];bool st[N];int dijkstra(){ memset(st,原创 2021-02-03 12:18:57 · 58 阅读 · 0 评论 -
最小花费【最短路】
最小花费题目思路:把题目转换为最短路模型,每两人转账需要扣除x%的手续费,总钱数就剩余w = 总钱数 (1-x%), 所以d(B) = d(A)w1w2w3…,使d(A)最小就是后边w的乘积最大,算出来w最大乘积之后d(A) = d(B)/(w1w2w3所以答案就是100/(Wmax);代码如下#include<iostream>#include<cstring>using namespace std;const int N = 2010;int n, m,原创 2021-02-03 10:51:10 · 123 阅读 · 1 评论 -
香甜的黄油【最短路】
香甜的黄油题目思路:用Dijkstra或者spfa求n次最短路,输出最短的一次即可,不用在意每次是否需要重新放缩,因为一旦能再次缩短,缩短之后的便是最短路,不能再缩短之前的便是最短路具体代码如下#include<iostream>#include<cstring>#include<queue>using namespace std;const int N = 810, M = 3000;int n, p, m;int id[N];int h[N原创 2021-02-03 09:34:59 · 116 阅读 · 0 评论 -
信使【最短路】
信使题目思路:信使从1号点到其它点的最大距离就是送信时间,数据范围较小直接Floyd具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 210;int n, m;int d[N][N];int main(){ memset(d, 0x3f, sizeof d); scanf("%d%d", &n, &m);原创 2021-02-02 20:07:13 · 166 阅读 · 0 评论 -
热浪【最短路】
热浪题目思路:很简单的最短路问题,使用Dijkstra和SPFA都可以具体代码如下#include<iostream>#include<cstring>#include<queue>#include<vector>#define x first#define y secondusing namespace std;typedef pair<int, int> PII;const int N = 3010, M = 62原创 2021-02-02 18:14:19 · 81 阅读 · 0 评论 -
Frogger POJ - 2253【最短路】
Frogger POJ - 2253题目思路:先建图,把坐标存储下来,再计算任意两点间的距离最后用Floyd,d[1][2]就是所求答案注意:认真读题具体代码如下#include<iostream>#include<cstring>#include<vector>#include<cstdio>#include<cmath>using namespace std;const int N = 1010, INF = 1e9;原创 2021-02-02 16:51:37 · 81 阅读 · 0 评论 -
Til the Cows Come Home POJ - 2387【Dijkstra】
Til the Cows Come Home POJ - 2387题目思路:最短路,直接用Dijkstra但是有重边需要判断,直接用朴素版Dijkstra即可具体代码如下#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N = 1010;int n, m;int g[N][N];int dist[N];bool st[N];in原创 2021-02-02 13:35:48 · 62 阅读 · 0 评论