最短路
hcx11333
菜鸡一枚,成长ing。。。
展开
-
POJ3159 Candies(差分约束)
题意:给n个人分糖果,下标1到n,给出m个约束条件a b c,a的糖果数比b的糖果少的个数不多于c,即 b的糖果-a的糖果思路:查分约束系统的第一题,b-a题目没有负权,因此可以用Dijkstra,加上堆优化。#include#include#include#include#include#include#include#include#include#include原创 2017-04-29 00:23:58 · 332 阅读 · 0 评论 -
hdu1874 畅通工程续(Dijkstra/Floyd/Bellman-Ford/SPFA)
题意:求最短路。思路:最短路裸题,四种办法都可以,拿来练习模板了。题目有个坑点WA了一发,两点之间的路可以有多条! 1、Dijkstra算法,适用于无负权图的单源最短路问题。邻接表、邻接矩阵时间复杂度O(n*n),用邻接表+斐波那契堆可以优化到O(m+n*logn)。代码一:邻接矩阵加暴力方法#include<cstdio>#include<cstring...原创 2017-04-19 00:37:23 · 330 阅读 · 0 评论 -
HDU6181(次短路两种写法)
题意:求起点1到终点n的次短路。方法一:用两次dijkstra分别求出起点到所有点的最短距离d1[1...n]和所有点到终点的最短距离d2[1...n]。然后枚举每条边uv,如果d1[u] + uv + d2[v] 不等于最短路,且小于当前答案,更新即可。#include <bits/stdc++.h>using namespace std;typedef long l...原创 2018-07-28 23:24:36 · 254 阅读 · 0 评论 -
HDU3191 & HDU1688 & POJ3463(次短路及条数)
HDU3191题意:求起点到终点的次短路长度及其条数。思路:在次短路的基础上增加num数组记录路径数。dist[i][0]记录到i的最短路长度,dist[i][1]记录到i的次短路长度。num[i][0]记录到i的最短路条数,num[i][1]记录到i的次短路条数。为node结点增加flag标记,用于分别更新最短路、次短路。有四种更新情况,if (!vis[v][0] &&...原创 2018-07-29 14:52:59 · 159 阅读 · 0 评论 -
POJ3255(次短路)
题意:第一行是点数N和边数R,后面是R条无向边。求从1到n的次短路长度。思路:模板题。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <stack>#inc...原创 2018-07-29 15:22:43 · 625 阅读 · 0 评论 -
POJ2449(dijkstra+A*)
题意:给一个有向图,求起点s到终点e的第K短路长度,没有就输出-1.思路:先用dijkstra处理出所有点到终点的最短路径长度,保存在dist数组中。然后用A*算法,按照g+h从小到大排序,g是到当前点的代价,h是当前点到终点的预期代价,即dist数组。用times记录每个点被找到的次数,每次从队列中弹出一个新的点,就将这个点的times加一,直到第k次找到终点即可。如果dist[s]==...原创 2018-07-31 14:57:45 · 2110 阅读 · 0 评论 -
POJ3259 Wormholes(spfa判负环)
题意:农场主有N块地编号1到N,有M条路径连接这些边,每条边有一个花费的时间,还有W个单向的虫洞,穿越虫洞可以回到一定的时间之前(可看作负边)。问你这个农场主能否通过这些路径和虫洞遇到之前的自己。思路:可以转化成求负环是否存在问题,只要存在负环,就可以无限更新时间,一定有解。SPFA板子即可。BFS版SPFA需要为每个点记录一个入队次数,如果有点入队超过定点数,一定存在负环。#inclu...原创 2018-07-31 17:28:38 · 144 阅读 · 0 评论