
图论--最短路
XYZgoforit
这个作者很懒,什么都没留下…
展开
-
POJ 3268 Silver Cow Party (单源最短路Dijkstra+反向构图)
题目链接POJ3268题目大意给定一个有N(1≤\leN≤\le1000)个结点、M(1≤\leM≤\le10510^5)条单向边的有向正权图,求每个结点出发到X号结点再回来到初始位置的花费的最小值。分析对于每个结点,要在它与X号结点之间走一个来回花费最小,必定它到X要走最短路,从X回到它也要走最短路。 返回的最短路好解决,即X号结点出发到其他结点的单源最短路,用Dijkstra算法跑一遍即可。现原创 2017-04-26 00:17:22 · 553 阅读 · 0 评论 -
POJ 3259 Wormholes (BellmanFord判断图是否存在负环)
题目链接POJ3259题目大意输入一个图,有N(1≤\leN≤\le500)个结点,M(1≤\leM≤\le2500)条正权无向边,W(1≤\leW≤\le200)条负权单向边,判断这个图中是否存在负权回路。分析判断图是否存在负环的模板题。 用Bellman-Ford算法,对所有边进行N-1轮松弛,如果之后还能继续进行松弛,则存在负权回路。#include <iostream>#include原创 2017-04-26 00:30:18 · 583 阅读 · 0 评论 -
POJ 1860 Currency Exchange (BellmanFord算法逆用 判断图是否存在正环)
题目链接POJ1860题目大意有N(1≤\leN≤\le100)种货币(标号1到N),M种货币的两两兑换法则(包括汇率r和手续费c),具体的法则是:当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 B币。现在一个人手头有S型号货币,量为V,问他能否经过交换最终得到S型号货币且数额增加(交易过程中货币原创 2017-04-26 01:10:32 · 366 阅读 · 0 评论 -
POJ 1125 Stockbroker Grapevine (多源最短路Floyd)
题目链接POJ1125题目大意有N个股票经济人可以互相传递消息,他们之间存在一些单向的通信路径。现在有一个消息要由某个人开始传递给其他所有人,问应该由哪一个人来传递,才能在最短时间内让所有人都接收到消息。若不存在这样一个人,则输出disjoint。分析多源最短路问题,用Floyd算法解决。 对于每个结点,若它到其他每个结点的最短路均为有限值,则它可以用来传播消息,传播消息的所需的时间为最后一个知道原创 2017-04-26 01:20:32 · 331 阅读 · 0 评论 -
POJ 2253 Frogger (单源最短路变型 求路径上最大边权值的最小值)
题目链接POJ2253题目大意输入N(2≤\leN≤\le200)个点的坐标,任意两点可以互相到达,经过的距离为它们的欧式距离。现在从1号点到2号点有多条路径,求这些路径中最大边权值的最小值。分析这题为单源最短路的变型题。 首先建图,由于点较少,用邻接矩阵即可,任意两点间建立无向边,权值为它们之间的欧式距离。 最原始的单源最短路问题可以求起点到终点间每条路径各自的权值和的最小值,而这道题是每条路原创 2017-04-26 17:01:11 · 2232 阅读 · 0 评论 -
HDU 2544 最短路 (模板题)
Dijkstra+邻接表+优先队列#include <iostream>#include <cstring>#include <queue>using namespace std;const int MAXN=110;const int MAXM=10010;const int INF=99999999;int edgenum=0,n,m,head[MAXN],book[MAXN];原创 2017-04-26 17:29:06 · 344 阅读 · 0 评论 -
HDU 6166 Senior Pan (多源多汇最短路+集合的二进制划分 17多校第九场第6题)
题目链接HDU6166题目大意给定一个n个结点n个结点,mm条边的带边权有向图,(1≤n,m≤1051\le n,m\le10^5),从中选取kk个点,求中kk个结点中任意两点间最短路的最小值。分析假设答案的最短路径是从kk个结点中的ss点到tt点之间的最短路,则只要将kk个结点构成的集合划分成两个子集,使得ss在其中一子集,tt在另一子集,那么求出这两个子集之间的最短路就一定为答案。 那么就下来原创 2017-08-24 00:08:09 · 403 阅读 · 0 评论