![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路径
Huglight
这个作者很懒,什么都没留下…
展开
-
XDU暑训2019 Day4 POJ3268 奶牛派对
题意:给一个带权单向图,X为派对地点,奶牛参加派对跟回家都是走最短路径,求这些奶牛的最长用时(参加用时+回家用时) 思路:首先想到的是每点都以该点为源点和以X为源点做一次djkstra,结果意料之内超时。AC思路:最短路数组可以重复用,所以只需要求以X为源点的最短路和以X为终点的最短路即可,求完第一个数组后翻转邻接矩阵求第二个数组,找出两数组最大和即可 #include<cstdio>...原创 2019-07-04 22:17:47 · 140 阅读 · 0 评论 -
POJ 1502 MPI Maelstrom 最短路
题意:有n台主机,给出每两台主机之间的通信时间,每台主机允许向所有连接到它的主机同时发送消息,求一条消息从主机1发送到所有其他主机所需要的最少时间。 思路:题意给的不太清楚,乍一看还以为要求最小生成树,实际上就是求主机1到其他主机的最短路中的最大值,用djkstra求就行 #include<iostream> #include<cstdio> #include<cma...原创 2019-10-08 20:54:36 · 80 阅读 · 0 评论 -
Codeforces 1204C. Anna, Svyatoslav and Maps 最短路 Floyd
题意:给一个无权有向图,和一个行走序列,求出一个最短的序列,该序列需满足: 序列为行走序列的子序列,且起点及终点与行走序列相同 走该序列所经过的最短路之一为给定行走序列 思路:可以看出行走序列中一个点可以省略,当且仅当其前驱和后继之间的最短路必须经过该点;若前驱和后继不经过该点,表明有不经过该点的更短的路径,故必须将其加入答案序列,否则就不是给定序列的子序列。需要注意的是若前驱和后继为同一个点...原创 2019-08-24 21:09:05 · 115 阅读 · 0 评论 -
POJ 3259 Wormholes SPFA 负权环
题意:给n个农场,给m条边,每条边指定两个农场之间行走需要的时间,再给w个虫洞,可以从虫洞穿梭到另一农场并且时间倒转k秒,求是否可以从某点出发,经过一定路径之后与以前的自己相遇 思路:两农场之间行走用时即为正权,虫洞穿梭即为负权,所求即为求是否存在负权环。需要注意的是要看清题意,两农场之间道路为双向边,虫洞为单向边 #include<iostream> #include<cstd...原创 2019-08-23 23:03:36 · 128 阅读 · 0 评论 -
POJ 1860 Currency Exchange SPFA 正权回路
题意:给出n种货币,m个兑换点,每个兑换点给出两种货币之间的汇率及佣金,如A兑换为B可以兑换(A-佣金)*汇率的量。给出初始货币种类,以及持有货币量,求是否可以找到一种兑换方案,使得持有的初始种类货币量变多 思路:以初始货币为起始点,初始货币量为初始权值,初始点到其他点的路径权值设置为最小值(0),松弛操作判断是否可以使得当前点的金额变多,若松弛过程中遇到当前点为初始点,表明找到了正权环,初始货币...原创 2019-08-23 22:06:22 · 95 阅读 · 0 评论 -
Codeforces 1206D Shortest Cycle Floyd 无向图最小环
题意:给出一串序列,若序列中两个数相与不为0,则可以在两数之间连一条边,求出这些数中存在的最小环中节点的个数,不存在环输出-1 思路:找无向图中最小环方法:用floyd在松弛的同时找环,保证环最小。但这样的话按照题目的数据量必定会超时,而实际上只要不为0的数小于128个,就需要floyd求解,大于128个最小环节点数就是3,至于为什么现在还没弄明白 #include<bits/stdc++....原创 2019-08-19 15:27:58 · 204 阅读 · 0 评论 -
XDU暑训2019 Day4 最短路
题意:给n个节点m条边,给出每条边相连节点,与边的权值,求1到n的最短路 Dijkstra算法: #include<cstdio> #include<cmath> #include<iostream> #include<algorithm> #include<cstring> using namespace std; int n, m,...原创 2019-07-04 13:37:00 · 137 阅读 · 0 评论 -
XDU暑训2019 Day4 POJ2387
也是最短路问题,多练习一下dijkstra #include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; const long long inf = 0x3f3f3f3f; int n, m, g[1005][1005], vis[...原创 2019-07-04 15:19:42 · 116 阅读 · 0 评论 -
XDU暑训2019 Day4 POJ2253 青蛙距离
题意:有两个青蛙和一堆石头,青蛙分别在石头1、2上,取青蛙路径为1到2的每条通路中最大边最小的权值,比如一条通路中最大边权值为2,另一条最大边权值为1.414,答案为1.414 思路:用dijkstra算法,最短路长度变为每条通路中最大边的最小权值,边的松弛根据每条通路最大边长度来操作 #include<cstdio> #include<iostream> #include...原创 2019-07-04 16:28:09 · 120 阅读 · 0 评论 -
XDU暑训2019 Day4 POJ1797 城市运输
题意:给n个城市m条边,1到n的所有路径中每条路径都有一条最小边,求这些最小边中的最大值 思路:用dijkstra算法求最长路,判断条件变为是否比当前最小边要长,相当于青蛙跳那题反过来 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespa...原创 2019-07-04 17:32:24 · 132 阅读 · 0 评论 -
POJ 3660 Cow Contest floyd dfs
题意:有n个奶牛,给出m个奶牛的关系,即某个奶牛的编程能力比另一个要强,求出能够确定排名的奶牛的最大数量 思路:建立n个点m条边的有向图,某个点能够确定排名,则其他所有点不是可以到达该点,就是可以由该点到达。可以用floyd来判断,给每条边权值赋1,如果松弛后某点与其他所有点的边权值不为无穷大,则该点就能确定排名 #include<iostream> #include<cstdi...原创 2019-10-08 22:35:06 · 124 阅读 · 0 评论