
最短路
文章平均质量分 71
hzasrd
这个作者很懒,什么都没留下…
展开
-
hdu1317 负权最短路(Floyd+bellman)
首先要读懂题,做这个题时读题看样例琢磨了半天才明白= =;题目的意思是,一个人从一号房间走到最后一个房间,每个房间有相应的能量值(可正可负),当走到这个房间的时候可以获取这个房间的能量值,如果走到最后一个房间时,人的能量值为正,则“winnable"”,否则的话就"hopeless",另外,这个人一开始自身有100点能量值,房间可以重复的走,且第一个房间和最后一个房间的能量值为零。首先输入原创 2016-07-24 12:45:50 · 1069 阅读 · 0 评论 -
hdu 1595 find the longest of the shortest
Marica is very angry with Mirko because he found a new girlfriend and she seeks revenge.Since she doesn't live in the same city, she started preparing for the long journey.We know for every road how m原创 2017-08-02 14:17:52 · 223 阅读 · 0 评论 -
基于vector的邻接表解决最短路稀疏图的问题
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input 输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛原创 2017-08-01 09:15:40 · 619 阅读 · 0 评论 -
LightOJ - 1041 Road Construction(最小生成树)
DescriptionThere are several cities in the country, and some of them are connected by bidirectional roads. Unfortunately, some of the roads are damaged and cannot be used right now. Your goal is t原创 2016-08-17 10:54:03 · 427 阅读 · 0 评论 -
poj3790 最短路径问题
最短路,用迪杰斯特拉算法做就行,不过要注意边的松弛条件,距离优先,先比较距离选择最小的,然后更新距离数组和价值数组,在距离相等的情况下再比较价值,选择价值最小的来更新;#include#include#includeint dis1[1100],dis[1100],e[1100][1100],bo[1100],e1[1100][1100];int inf=1e10;int main原创 2016-07-27 23:30:26 · 404 阅读 · 0 评论 -
poj3259 Wormholes(bellman负权处理)
思路:用bellman建立无向边,然后将虫洞的边置为负值求最短路,在进行n-1次松弛后,判断是否还能继续松弛。如果可以,则有负权回路,则可以在出发前回到原地,输出YES,否则,NO;#include#include#include#include#define N 6000//建立无向边时注意N的范围相应的扩大为二倍int u[N],v[N],w[N],dis[N];int n,m原创 2016-07-26 20:56:38 · 273 阅读 · 0 评论 -
hdu1548 a strange lift
这道题可以用BFS来做,也可以用最短路算法来做,建好图就可以了。#include#includeint main(){ int a,B,i,n,u,v,j,min; int inf=99999999; int dis[220],b[220],e[220][220],k[220]; while(scanf("%d",&n),n!=0) {原创 2016-07-26 19:20:25 · 237 阅读 · 0 评论 -
poj1511Invitation Cards
题目让求从起始点到各个路口来回花费的钱之和的最小值是多少,类似于poj3268,正着建个图,再反向建个图,计算两者的最小值之和就可以了;但是这道题数据比较大,用邻接矩阵会超时也会爆内存,需要用邻接表来建图;要注意题目给的数据过于大,注意类型溢出以及合适的inf值;#include#include#include#include#define N 1000006const int in原创 2016-07-26 18:08:45 · 775 阅读 · 0 评论 -
poj2387 Til the Cows Come Home
最短路模板题,套用模板就行。#include#includeint b[1100],dis[1100],e[1100][1100];int main(){ int m,n,t1,t2,t3,i,j,v,u,min; int inf=99999999; while(~scanf("%d%d",&m,&n)) { for(i=1; i<=原创 2016-07-21 17:49:23 · 265 阅读 · 0 评论 -
poj1797 Heavy Transportation
题目让求从源点到N的最大载重量,这是一道最短路Dijkstra的变形,稍加改动就可以了。#include#includeint b[1100],dis[1100],e[1100][1100];int Min(int a,int b){ return a<b?a:b;}int main(){ int m,n,t1,t2,t3,i,j,v,u,max,T,k;原创 2016-07-21 17:55:46 · 260 阅读 · 0 评论 -
poj3660 Cow Contest
题意大致为,给你N头牛,他们之间进行进行M场比赛来确定排名,如果A赢B,B赢C,相应的可以确定A赢C;问最后可以确定排名的牛共几头;可以用Floyd算法来解决,利用一个中间变量k,用e[i][j]来表示i与j之间的比赛结果,若i与j之间有比赛,则e[i][j]=1;制作一个有向图,若i赢j,则顶点i指向顶点j有一条路;最后求出每个顶点的出度和入度之和,看是否等于n-1,若等,则可以确定此牛原创 2016-07-22 11:53:47 · 276 阅读 · 0 评论 -
poj2253 Frogger
题意是让求从源点到目标点青蛙每次跳跃的最小距离是多少,并且可以借助中间的石块。这道题类似于poj1797,用Floyd来做就很简单了。可以转变为用所给的石块的坐标来求出每两个点之间的距离,以此为边来构建一个无向图,求出从源点到目标点每次跳跃的最小距离是多少。注意这个时候边的松弛条件就要相应的改变为如果(e[i][j]>Max(e[i][k],e[k][j])),则更新e[i][j];最后输出e原创 2016-07-22 14:03:30 · 330 阅读 · 0 评论 -
算法模板之次短路
给你N个点和R条边,问从起点到终点的次短路是多少。无向边,且可重复走。#include #include #include #include #define MAXN 100009#define INF 0x3f3f3f3fusing namespace std;typedef long long ll;struct edge{ int to, cost;原创 2017-08-24 15:20:07 · 795 阅读 · 0 评论