随笔分类 -  最短路问题

摘要:Description清早6:00,Farmer John就离开了他的屋子,开始了他的例行工作:为贝茜挤奶。前一天晚上,整个农场刚经受过一场瓢泼大雨的洗礼,于是不难想见,FJ 现在面对的是一大片泥泞的土地。FJ的屋子在平面坐标(0, 0)的位置,贝茜所在的牛棚则位于坐标(X,Y) (-500 #in... 阅读全文
posted @ 2014-11-04 23:38 polebug 阅读(337) 评论(0) 推荐(0)
摘要:Description农夫约翰正驾驶一条小艇在牛勒比海上航行.海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛.一张藏宝图上说,如果他的路程上经过的小岛依次出现了Ai,A2,…,AM(2≤M≤10000)这样的序列(不一定相邻),那他最终就能找到古老的宝藏.但是,... 阅读全文
posted @ 2014-11-04 08:48 polebug 阅读(208) 评论(0) 推荐(0)
摘要:借bzoj1624练了一下模板(虽然正解只是floyd)spfa:#include #include #include #include #include #include using namespace std;const int INF=100001;const int maxm=10001,m... 阅读全文
posted @ 2014-11-04 08:47 polebug 阅读(464) 评论(0) 推荐(0)
摘要:在利贝尔王国王都格兰赛尔正处于一场危机当中,获得消息的小约和小艾正打算赶赴那里,阻止这场阴谋。但是在出发前,他们发生了分歧,小艾希望走最短路,以尽快到达王都,而小约则希望多走不同的道路,以收集情报。后来,他们想到了折衷的办法,选一条路径,使得总路程除以道路数的商最小(即边权平均值最小)。输入:给出利... 阅读全文
posted @ 2014-11-02 23:50 polebug 阅读(301) 评论(0) 推荐(0)
摘要:旅行【问题描述】 Z 小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光。Z 小镇附近共有N 个景点(编号为1,2,3,…,N),这些景点被M 条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路。也许是为了保护该地的旅游资源,Z 小镇有个奇怪的规定,就是对于一条给定的公路Ri,任何... 阅读全文
posted @ 2014-10-30 00:26 polebug 阅读(384) 评论(0) 推荐(0)
摘要:Description贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友。贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路。 贝茜所在的乡村有R(1 2 -> 4 (长度为100+200=300)第二短路:1 ->... 阅读全文
posted @ 2014-10-29 23:49 polebug 阅读(545) 评论(0) 推荐(0)
摘要:DescriptionFarmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务。于是,FJ必须为此向电信公司支付一定的费用。 FJ的农场周围分布着N(1 3;3->2;2->5,这3对电话线杆间需要的 电话线的长度分别为4、3、9。FJ让电信公司提供那条长度为9的电话线,... 阅读全文
posted @ 2014-10-27 13:13 polebug 阅读(295) 评论(0) 推荐(0)
摘要:1.存边:可用邻接表或是vector;2.队列: 可用指针或是queue; 阅读全文
posted @ 2014-10-27 10:16 polebug 阅读(132) 评论(0) 推荐(0)
摘要:MARK 用spfa判断是否存在负环判断是否存在负环的方法有很多,其中用spfa判断的方法是:如果存在一个点入栈两次,那么就存在负环。细节想想确实是这样,按理来说是不存在入栈两次的如果边权值为正的话这个算法是O(N*M)还有一种方法是直接用bellman-ford,虽说spfa也就是bellman-... 阅读全文
posted @ 2014-08-12 17:28 polebug 阅读(391) 评论(0) 推荐(0)
摘要:早晨碰到了一题挺裸的最短路问题需要打印路径:vijos16351.首先说说spfa的方法:其实自己之前打的最多的spfa是在网格上的那种,也就是二维的一维的需要邻接表+queue以及对于queue的操作,自己也是醉了这里贴一个模板(不含打印路径):#include#include#include#i... 阅读全文
posted @ 2014-08-12 15:41 polebug 阅读(936) 评论(0) 推荐(0)
摘要:void add(int x,int y,int z){//邻接表e[tot].from=x;//头结点e[tot].to=y;//尾结点e[tot].w=z;//边权e[tot].next=head[x];head[x]=tot++;} 阅读全文
posted @ 2014-03-24 23:48 polebug 阅读(1051) 评论(0) 推荐(0)