
图论——最短路
文章平均质量分 74
dumeichen
这个作者很懒,什么都没留下…
展开
-
poj 1734 Floyd输出路径(长度大于等于3的最小圈)
题意:给定一个无向带权图,求其中长度大于等于3的最小圈(实际上长度等于2的圈就是重边,所以存边的时候忽略重边,只存储权值最小的边)思路:Floyd的应用。找到圈的办法就是判断d[i][j] + map[i][k] + map[k][j] k -> j -> j到i的最短路)这样一个环就找到了,接下来我们要记录路径,用path[i][j]表示在最短路i到j的路径上j的前一个结点,所以我们在更新原创 2015-03-15 11:05:19 · 790 阅读 · 0 评论 -
poj 2240 Floyd判断有向图负环(arbitrage)
题意:Arbitrage问题(套汇)。给定若干币种及一些币种转换的汇率,问能否有套汇的可能。思路:如果以币种为定点,汇率为边建图,则相当于求一个圈,其上权值乘积大于1。将权值取对数再取负,变成求有向图负环。用floyd算法即可。(直接上Floyd,三层循环中判断直接用乘法也OK)#include #include #include #define min(a,b) ((a)<(b)?原创 2015-02-06 20:17:32 · 2064 阅读 · 0 评论 -
poj 1724 spfa(有费用上限的最短路(双重标准最短路))
题意:给定一个图,图中每条路都有路长Length 和过路费Toll 两个参数,一条路连接两个城市,任意两个城市之间有且仅有一条路。现在只有 K 块钱,要求从起点City1出发,到达终点CityN的最短路,也就是说在 K 花费内的最短路。思路:实际上就是双重标准最短路问题。在算法设计一书第8章的习题37,也是算法课期末考试的压轴题。其属于NPC从子集和进行归约。本题的解法是一个伪多项式解法,因为原创 2015-02-09 10:15:05 · 526 阅读 · 0 评论 -
poj 1062 最短路(昂贵的聘礼)
题意:中文题。思路:最短路dijkstra。需要枚举可行区间。每次运行不用重复构图,只需将不符合题意的点在used数组提前赋值为1即可。#include #include #define INF 0x3fffffff#define min(a,b) ((a)<(b)?(a):(b))#define max(a,b) ((a)>(b)?(a):(b))#define N 105i原创 2015-02-20 17:33:03 · 330 阅读 · 0 评论 -
poj 1847 dijkstra(搬道岔的最少次数)
题意:节点i能够通向若干节点,但其中只有一个节点是直接连通的,其余的需要搬道岔。从原创 2014-07-12 14:18:12 · 561 阅读 · 0 评论 -
poj 3256 dfs水(牛要聚会)
题意:有K头牛,有N个牧地,这N个牧地有M条单项路,求如果这K头牛(初始都在一个牧地上)要聚餐,可以去的地方有多少个,也就是每头牛都能到的地方有多少个?思路:从每头牛所在位置进行dfs,找到能够到达的所有顶点。最后扫一遍顶点,看看哪个的数量等于牛数K即可。#include #include #include #include #include #include using na原创 2015-07-28 21:05:57 · 358 阅读 · 0 评论 -
poj 3259 spfa/bellman判断负圈(虫洞)
题意:判断有向连通图(图中有重边)中是否存在负权环。给定N个点,M条双向正权边,W条单向负权边。思路:用bellman或者spfa均可。在bellman算法中的表述为:在求出经过了n-1条边的最短路dist[k]之后,再对每条边判断一下:加入这条边是否会使得顶点k的最短路径值再缩短,即判断:dist[u]+w(u,k)在spfa中的表述为:若一个点最短路被改进的次数达 到n ,则有负权环。原创 2015-07-28 20:38:08 · 379 阅读 · 0 评论 -
poj 1201 spfa(区间取数)
题意:给定r思路:原创 2014-07-26 15:38:06 · 484 阅读 · 0 评论 -
poj 3615 folyd变形(求有向图多对最大瓶颈路)
题意:给定一个有向带权图,查询多个点对,如(a,b)。求a到b之间所有路径上的最大权值的最小值。思路:floyd变形即可。一开始以为是dp,想成了dp[i][j] = min(dp[i][j],max(w[i][k],dp[k][j]),实际上比如求4到2,需要求4到3,求3到2的时候又需要求4到2,所以这样是不对的。#include #include #include #inclu原创 2015-09-01 20:59:18 · 411 阅读 · 0 评论 -
poj 3613 矩阵快速幂变形(恰好k条边最短路)
题意:给定一个无向图和一个点对(a,b),求从a到b的恰好长度为k的最短路。思路:对于图的邻接矩阵,做一次add(见代码)操作,元素变成长度为2的最短路,再自身一次就是长度为4的最短路。按照这个思路加上快速幂的思路就OK了。#include #include #include #include #include #include using namespace std;#de原创 2015-09-02 22:00:48 · 411 阅读 · 0 评论 -
poj 3621 最优比率圈
题意:给定一个有向图,每个点有个权值,每条边也有权值。现在要求一个圈,使得圈所过的顶点权值之和/所过的边权值之和最大。如果经过相同点多次,那么点权值只计算一次(比如起点和终点那个点只计算一次)思路:和最优比率生成树的想法差不多。摘抄如下:令在一个环里,点权为v[i],对应的边权为e[i], 即要求:∑(i=1,n)v[i]/∑(i=1,n)e[i]最大的环(n为环的点数), 设题目原创 2015-09-06 16:55:07 · 309 阅读 · 0 评论 -
poj 2570/3275/1975 传递闭包+位运算(从a到b选哪个公司能到呢)
题意:有若干家公司(每个公司用一个小写字母表示,所以公司的数量不超过26),他们分别在若干个城市的路由器间铺设了自己的光纤。给定这个城市的路由器铺设方案,现在多组查询(A,B):如果要从路由器A到路由器B传送资料,可以使用哪家公司铺设的光纤?如能则分别输出这些公司的代号。思路:大方向上的思路是首先求出每个公司的传递闭包,然后对于查询直接查找即可。传递闭包的求法可以使用floyd,这原创 2015-10-15 23:42:16 · 376 阅读 · 0 评论 -
poj 1275 差分约束(最少需要雇佣多少员工呢)
题意:一家每天24小时营业的超市,需要一批出纳员来满足它的需求。超市在每天的不同时段需要不同数目的出纳员(例如,午夜只需一小批,而下午则需要很多)来为顾客提供优质服务,他希望雇佣最少数目的纳员。 现在给定一天里每一小时需要出纳员的最少数量R(0),R(1),...,R(23)。R(0)表示从午夜到凌晨1:00所需要出纳员的最少数目;R(1)表示凌晨1:00到2:00之间需要的;等等。每一天,这些数原创 2015-10-23 17:02:43 · 589 阅读 · 0 评论 -
poj 1364 差分约束(笨国王求序列)
题意:考虑一个长度为n的序列是否存在,其中序列为S={a1,a2,a3,a4...ai...an},现在给出m个不等式,需要满足ai+a(i+1)+a(i+2)+...+a(i+n)ki。不等式如下描述:四个参数,其中第一个数i代表序列从第几项开始,第二个数n表示i后面有n个数(也即序列长为n+1,从a(i)...a(i+n)),第三个参数表示大于或者小于,第四个是数值。当符号为gt代表‘>’,符原创 2014-12-03 15:03:55 · 498 阅读 · 0 评论 -
最短路径条数(floyd)
题意:给定一个n顶点有向图,求从顶点1到顶点n之间最短路径的条数(题目连接http://acm.cs.ecnu.edu.cn/problem.php?problemid=1818)。思路:原创 2014-10-12 00:21:50 · 1966 阅读 · 1 评论 -
poj 3013 spfa(圣诞树)
题意:给n个点从1到n标号,下面一行是每个点的权,另外给出m条边,下面是每条边的信息,两个端点+权值,边是无向边。你的任务是选出一些边,使这个图变成一棵树,使得这棵树的花费最小。这棵树的花费是这样算的,1号固定为树根,树中每个双亲节点下面的边都有个单价(即边权),然后单价乘上这条边的下面所有的子孙后代的点权和。思路:通过写出求和式子可以发现求的其实是对每个点的权值乘以从节点1到这个点的最短路的原创 2015-04-15 16:00:48 · 556 阅读 · 0 评论 -
poj 1122 最短路+路径追踪(消防路径)
题意:在一个n顶点图上,找出从消防站到着火点的最短时间与最短时间中所走的点。路的长度由一个n×n的矩阵给出,矩阵中的第(i,j)个元素代表从i到j的时间,-1代表不能到达。最后一行,第一个数代表着火点;后面多个数代表消防站。输出的是消防站 着火点 时间 路径,按照时间从小到大排序输出(如果有相同的则任意输出,如果有不同的路径也是任意输出)。思路:非常显然的最短路,不过是多源点单汇点,这个可以通原创 2015-04-25 10:00:50 · 821 阅读 · 1 评论 -
poj 2983 spfa差分约束
题意:给出两种关于防御站位置的信息,一种是确切的信息,P A B X,表示A在B北面X距离的地方,另一种是V A B,表示只知道A在B的北面,且距离至少为1。问这些信息有没有矛盾。思路:明显的差分约束。对于P A B X,列出X注意队列的大小~~#include #include #include #define N 1005#define M 100005#define I原创 2015-04-16 17:45:40 · 349 阅读 · 0 评论 -
poj 1752 差分约束(沿路建广告)
题意:有n个人在一条路上跑步,假设这条路上每一个点有一个广告牌,广告商准备在广告牌上贴广告。现在已知这n个人从ai开始跑,到bi结束,现在广告商需要每个人都至少要看到k个广告(对于跑步全程都小于k的人来说,需要他经过的每个广告牌上都有广告)。问满足条件的总的广告数和哪些广告牌上应该张贴广告。思路:差分约束。Xi表示用起始点到Xi总共需要张贴的广告数量。那么对于第i个人,X(bi+1)-X(ai原创 2015-04-24 09:01:39 · 619 阅读 · 0 评论 -
poj 3268 dijkstra
题意:若干个农场,每个农场有一头牛。每个农场的牛到一个原创 2014-07-08 19:41:10 · 432 阅读 · 0 评论 -
poj 2457 dijkstra(星星之间买牛奶)
题意:cows 想用自己手上的商品(编号为1)通过多次交换得到想要的商品(编号为k),给出两种商品的交换关系,求出至少有多少种商品经过交换,输出交换的顺序。思路:最短路。相当于求从1商品到k商品的最短路径,中间再记录一下结点信息。 #include <stdio.h>#include <string.h>#define INF 0xfffffff#def...原创 2014-11-06 14:28:58 · 505 阅读 · 0 评论 -
poj 3169 差分约束(奶牛排队)
题意:思路:差分约束题意:1>对于ML有:d[b]-d[a]2>对于MD有:d[a]-d[b]3>对于n个顶点的约束图有:s[i]-s[i+1]题目的解为:有负环输出-1,d[n]无穷大输出-2,其他输出dist[n].原创 2014-07-13 21:21:49 · 391 阅读 · 0 评论 -
poj 3159 差分约束(分发糖果)
题意:flymouse是班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发。flymouse希望自己分得的糖果数尽量多于snoopy。对于其他小朋友而言,则必须自己得到的糖果不少于班上某某,给出m个这种约束关系(u,v, w)即同学u的糖果数不能比同学v的糖果数少w。问flymouse最多能多snoopy几个糖果。思路:差分约束,用spfa来做(堆栈!)。这道题的有点怪,sp原创 2014-07-16 11:30:19 · 500 阅读 · 0 评论 -
sgu 103(poj 1158) 最短路(含蓝紫灯的最短路)
题意:一个普通最短路模型(节点间最多zhi原创 2014-08-13 23:59:40 · 725 阅读 · 0 评论 -
poj1511 spfa
题意:有N个节点。求从第一个节点到所有其他节点的最短路以及从suo原创 2014-07-09 16:50:45 · 350 阅读 · 0 评论 -
poj 3255 spfa(求次短路)
题意:给定一个带权无向图,顶点标号为1~n。求从dia原创 2014-10-07 18:57:11 · 514 阅读 · 0 评论 -
poj 3463 dijkstra变形(求最短路和次短路的数量)
题意:给定一个带权有向图以及起点s和终点t,原创 2014-10-07 20:21:59 · 659 阅读 · 0 评论 -
poj 3114 强连通分量+最短路(间谍通信)
题意:给定一个有向带权图,随后给出q个查询(a,b),求a->b的最短花费。其中如果这两个city属于同一个国家,则花费时间为0。两个city同属于一个国家当且仅当这两个city互相可达。思路:属于同一个强连通分量的点就是属于同一个国家了。然后进行缩点,在缩点之后的图上求最短路即可。一开始看到多组查询而且点数不多就写了Floyd,但是TLE。随后改成每次查询就来一次SPFA,这样AC。#i原创 2015-03-04 22:27:32 · 492 阅读 · 0 评论