ACM_最短路径
LzyRapX
Just For Fun .
展开
-
Dijkstra算法
Dijkstra算法是一个经典的算法——他是荷兰计算机科学家Dijkstra于1959年提出的单源图最短路径算法,也是一个经典的贪心算法。所谓单源图 是规定一个起点的图,我们的最短路径都是从这个起点出发计算的。算法的适用范围是一个无向(或者有向图),所有边权都是非负数。算法描述:节点集合V = {}空集合,距离初始化。节点编号0..n – 1, 起点编号0≤ s 距原创 2016-04-16 22:51:27 · 5239 阅读 · 2 评论 -
算法提高 道路和航路 (SPFA的SLF优化)
问题描述农夫约翰正在针对一个新区域的牛奶配送合同进行研究。他打算分发牛奶到T个城镇(标号为1..T),这些城镇通过R条标号为(1..R)的道路和P条标号为(1..P)的航路相连。每一条公路i或者航路i表示成连接城镇Ai(1i(1ii。每一条公路,Ci的范围为0ii可能为负的,也就是-10,000i每一条公路都是双向的,正向和反向的花费是一样的,都是非负的。每一条原创 2017-03-16 15:19:02 · 1454 阅读 · 0 评论 -
SPFA以及其优化
SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。SPFA,要从Bellman-ford的优化说起。在n个点m条边的图中,Bellman-ford的复杂度是n*m,依次对每条边进行松弛操作,重复这个操作n-1次后则一定得到最短路,如果还能继续松弛,则有负环。这是因为最长的没有环路的路,也只不原创 2017-03-16 15:06:47 · 5396 阅读 · 2 评论 -
最短路 (Spfa)
问题描述给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。输入格式第一行两个整数n, m。接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。输出格式共n-1行,第i行表示1号点到i+1号点的最短路。样例输入3 31原创 2017-03-08 13:02:16 · 1004 阅读 · 0 评论 -
HDU 2066 一个人的旅行 (裸的dij)
一个人的旅行Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 33125 Accepted Submission(s): 11411Problem Description虽然草儿是个路痴(就是在杭电待了一年多,居然还原创 2016-10-01 21:35:03 · 512 阅读 · 0 评论 -
Codeforces Round #333 (Div. 2) C. The Two Routes (最短路)
C. The Two Routestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIn Absurdistan, there are n towns (number原创 2016-08-24 15:01:47 · 1093 阅读 · 0 评论 -
最短路径(Floyd算法)
有些问题中,只算出一个顶点到其他顶点的最短路径是不够的,需要算出每对顶点的最短距离,如果多次运行dijkstra算法,则编程或者时间复杂度过高,所以有一种编程简单,时间效率更高的算法---Floyd算法Floyd算法:可以是无向图或有向图,边权可正可负,唯一要求是不能有负环。 算法的实现模板:const int maxn=1001;//mat存储图的信息//dist存储原创 2016-05-06 00:03:38 · 770 阅读 · 0 评论 -
最短路径(bellman算法详解)
首先介绍一下bellman算法:Bellman-ford算法是求含负权图的单源最短路径算法,效率很低,但代码很容易写。即进行持续地松弛(原文是这么写的,为什么要叫松弛,争议很大),每次松弛把每条边都更新一下,若n-1次松弛后还能更新,则说明图中有负环,无法得出结果,否则就成功完成。Bellman-ford算法有一个小优化:每次松弛先设一个标识flag,初值为FALSE,若有边更新则赋值为T原创 2016-05-08 11:21:10 · 3862 阅读 · 0 评论 -
HDU 2544 最短路(dijkstra or Floyd or bellman or spfa )
最短路Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 50648 Accepted Submission(s): 22268Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮原创 2016-05-02 21:11:34 · 481 阅读 · 0 评论 -
最短路径(Bellman-Ford算法)
对于单源最短路径的问题,Dijkstra算法对于带负权边的图就无能为力了,而Bellman-Ford算法就可以解决这个问题。 Bellman-Ford算法:可以处理带负权边的图。算法的实现模板:typedef struct edge{ int v; //起点 int u; //终点 int w; }edge;edge edges[20004];int d[1004原创 2016-05-06 00:01:49 · 1117 阅读 · 0 评论 -
L2-1. 紧急救援(dijkstra单源最短路径拓展应用)
L2-1. 紧急救援时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队原创 2016-05-12 17:45:53 · 939 阅读 · 0 评论 -
最短路径(dijkstra算法)
带权有向图,求源到其他所有各顶点的最短路径长度。单源最短路径问题,但不能处理带负权边的图 最短路:dijkstra算法算法的实现模板:#define MaxN 10010 //MaxN是点的个数#define MaxInt 200000000 //MabInt表示不可达int map[MaxN][MaxN],dist[MaxN];bool mark[MaxN];i原创 2016-05-05 23:58:58 · 700 阅读 · 0 评论 -
51nod Dijkstra算法
你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大原创 2016-04-16 22:55:25 · 968 阅读 · 0 评论 -
ACdream 1100 瑶瑶饿了(最短路+dp)
题目链接: ACdream 1100题解: 先求出最短路,再dpdp。 求最短路你可以SPFASPFA,也可以FlodyFlody,O(n3)O(n^3)。但用SPFASPFA要快。AC代码:/** this code is made by LzyRapx* Problem: 1100* Verdict: Accepted* Submission Date: 2017-06-21 09原创 2017-06-21 10:44:17 · 355 阅读 · 0 评论