--最短路问题
guang光撒旦
码农
展开
-
poj3268 dijkstra单源算法正反利用
题目大意:给出n个点和m条边,接着是m条边,代表从牛a到牛b需要花费c时间,现在所有牛要到牛x那里去参加聚会,并且所有牛参加聚会后还要回来,给你牛x,除了牛x之外的牛,他们都有一个参加聚会并且回来的最短时间,从这些最短时间里找出一个最大值输出dijkstra算法,最短路径只需要从x到i的最短路径代表他们返回的最短路径,然后将所有边反过来,再从x到i的最短路径代表他们来参加聚会的最短路径folyd算法原创 2015-03-25 21:05:35 · 193 阅读 · 0 评论 -
POJ2387求负权值
这道题是一个农场有F个神奇的农场 农场有N个点,M条路,W个虫洞。虫洞能回溯时间。 问能不能从某个点出发,通过路和虫洞,回到原点,时间比原来早。我第一思路是用bellman-ford算法,可以求是否出现负权值情况来做。 提交了好几次不对,发现坑爹之处是M条路是双向的,W个虫洞是单向的,理解了这个以后就能做了。它是要求某个点,所以要便利所有点来做bellman算法。#include <cstri原创 2015-03-25 23:38:01 · 314 阅读 · 0 评论 -
poj1502迪杰斯特拉模板题
无向图的最短路问题,直接上模板可解。 唯一的问题是输入稍有些麻烦。 用stringstream ss; string s; getline(cin,s); ss.str(s); 可以解决 详情见http://www.ysg.name/?p=12#include <cstdio>#include <cstring>#include <sstream>#include <string原创 2015-03-26 13:00:03 · 277 阅读 · 0 评论 -
poj3660Cow Contest求闭包传递
题意:给出牛的个数N,M个结果A和B(A能打败B)。问有多少头牛的rank已经确定。 思路:求每一头牛相关的边数(即度的大小,如果度的大小等于n-1,表示其他牛与他的关系已经确定,则这个牛的rank也就确定了)。如果有一个点,排名在它之前的和排名在它之后的点之和为n-1,那么它的排名就是确定的。#include <cstdio>#include <cstring>using namespace原创 2015-03-30 12:30:46 · 183 阅读 · 0 评论 -
POJ 2240Arbitrage求正环
问题:通过汇率是否能够套利。解法:bellmanford可以求正负环,操作后看是否存在正环。#include <iostream>#include <cstdio>#include <cstring>#include <map>using namespace std;int N,M;map<string,int> V;typedef struct edge{ int from原创 2015-03-31 17:08:41 · 207 阅读 · 0 评论 -
POJ 2387Til the Cows Come Home求不重边最短路
套模板的最短路问题,就是它是一个无向图,这是一个注意的地方。 用bellman-ford算法不用考虑重边。用迪杰斯特拉要考虑#include <cstdio>#include <cstring>#include <vector>#define INF 1<<29using namespace std;const int MAX = 2010;struct node{ int原创 2015-03-24 23:26:26 · 166 阅读 · 0 评论 -
POJ 2253Frogger求路径中最大权值最小路
题目大意: 给出两只青蛙的坐标A、B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的。显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离。 现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离。Floyd算法 用Floyd算法求出两两最短路,再求出从每个点开始的最长路,最后从这n个最长路原创 2015-03-24 23:34:40 · 430 阅读 · 0 评论