随笔分类 -  Graph

树的直径 图的直径
摘要:[转]http://www.cnblogs.com/hanyulcf/archive/2010/10/23/tree_radius.html树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径; 原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点 证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则必定存在另一个点w使得u到w的距离更长,则于BFS找到了v矛盾) 2) 如果u不是直径上的点,则u到v必然于树的直径相交(反证),那么交点到v 必然就是直径的后 阅读全文

posted @ 2013-03-12 11:31 龙豆 阅读(599) 评论(0) 推荐(0) 编辑

网络最大流问题算法小结 [转]
摘要:通过 USACO 4.2.1 Ditch 学习一下最大流算法 。可惜它给的测试数据几乎没有任何杀伤力,后面测试时我们采用 DD_engi 写的程序生成的加强版数据。总体上来说,最大流算法分为两大类:增广路 (Augmenting Path) 和预流推进重标号 (Push Relabel) 。也有算法同时借鉴了两者的长处,如 Improved SAP 。本篇主要介绍增广路类算法,思想、复杂度及实际运行效率比较,并试图从中选择一种兼顾代码复杂度和运行效率的较好方案。以下我们将会看到,有时理论分析的时间复杂度并不能很好的反映一种算法的实际效率。1. Ford - Fulkerson 方法所有增广路算 阅读全文

posted @ 2012-05-20 19:49 龙豆 阅读(11226) 评论(3) 推荐(4) 编辑

浅谈网络流的基本算法 [转]
摘要:引言 过去听起来高深莫测的网络流算法,现在已飞入寻常百姓家了,对于每一个OIER,网络流是一个神圣的东西(个人见解),但神圣的同时,它并不是那样抽象,最形象的模型就是水流,从长江源点无限的向外流水,而大海(汇点)则在不断地‘喝水’,当然,你也可以不把它想成水,或者是其他一切可以流动的东西。而事实上,有些东西的流动比较流畅,而某些东西可能相对而言比较粘稠,流速更慢,因此,就产生了一个问题,单位时间内的总流量最多多少,这里会根据流速给定单位时间内的流量,这就是最先开启网络流之门的最大流算法,它的解决方式将在后面谈到,再想一下,如果水管是另一个物流公司所有,那么你会根据从哪里运到哪里付出一定的代.. 阅读全文

posted @ 2012-05-20 19:29 龙豆 阅读(8252) 评论(2) 推荐(1) 编辑

poj-1459 Power Network **
摘要:1 //[转] : http://blog.csdn.net/moon_1st/article/details/5365886 2 //网络流中求最大流几乎最快的算法——最高标号预流推进算法(HLPP) //不过这里不含GAP优化,GAP优化见本blog《浅谈网络流的基本算法[转]》 (注: 没有gap优化似乎HLPP很渣啊~ ) 3 //思路很直接,略 4 //代码很清晰, 注释略 5 6 7 #include <iostream> 8 #define Max 65535 9 using namespace std; 10 11 int s,t,n,np,nc,m... 阅读全文

posted @ 2012-05-15 17:20 龙豆 阅读(742) 评论(1) 推荐(1) 编辑

poj-3255 Roadblocks ***
摘要:1 /* 2 *解题报告 3 [转: http://hi.baidu.com/lewutian/blog/item/7986c62c4aa412e18a1399bb.html ] 4 本人在POJ上做过次小生成树的问题。当时的解决思路是把最小生成树里面的边逐个去掉, 5 而计算现在的最小生成树。证明很简单,在此略去。 6 7 可是现在解决次短路问题也采用这样的思路就会非常麻烦。SPFA一次的时间复杂度 8 大约是O(2n),枚举最短路的边是O(r)级别的,这样看来最坏情况下的 9 时间复杂度就会有O(2nr),将近10亿。 10 就算是O(r)太过悲观的话,想在2秒内... 阅读全文

posted @ 2012-03-29 16:27 龙豆 阅读(540) 评论(0) 推荐(0) 编辑

poj-3072 Robot ***
摘要:/* * Graph-poj-3072.cpp * * Created on: 2011-11-20 * * dijkstra.. * * 分别用 STL 的 heap操作 和 普通的数组操作 实现 * * */#include <cstdio>#include <cmath>#include <cstring>using namespace std;const int maxn = 20 + 2;const double pi = atan(1.0) * 4;const double eps = 1e-9;const double inf = 100000 阅读全文

posted @ 2011-11-20 13:28 龙豆 阅读(1176) 评论(0) 推荐(0) 编辑

次短路径与次小生成树 [转]
摘要:[次短路径]次短路径可以看作是k短路径问题的一种特殊情况,求k短路径有Yen算法等较为复杂的方法,对于次短路径,可以有更为简易的方法。下面介绍一种求两个顶点之间次短路径的解法。我们要对一个有向赋权图(无向图每条边可以看作两条相反的有向边)的顶点S到T之间求次短路径,首先应求出S的单源最短路径。遍历有向图,标记出可以在最短路径上的边,加入集合K。然后枚举删除集合K中每条边,求从S到T的最短路径,记录每次求出的路径长度值,其最小值就是次短路径的长度。在这里我们以为次短路径长度可以等于最短路径长度,如果想等,也可以看作是从S到T有不止一条最短路径。如果我们规定求从S到T大于最短路径长度的次短路径,则 阅读全文

posted @ 2011-11-17 22:59 龙豆 阅读(1926) 评论(0) 推荐(0) 编辑

poj-1324 Holedox Moving **** [转]
摘要:[转] http://bbs.byr.cn/wForum/disparticle.php?boardName=ACM_ICPC&ID=28668&pos=6&page=1 贪食蛇的进化之路 此题是要求计算贪食蛇从一个初始位置把头移动到(0,0)位置需要最少移动的步数。 以下是我的优化过程。 Run id user id problem result memory time language codelength submit time4981334 zengkui 1324 Accepted 244K 16MS C++ 5548B 2009-04-15 11:04:24 阅读全文

posted @ 2011-11-17 21:52 龙豆 阅读(525) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示