Visitors hit counter dreamweaver
摘要: 这题把floyd和bellman-ford两种方法都概括了,所以很值得一做。 题意:根据给出的关系图,判断是否存在一条从1到n的路径,且最终的cost值为正值,初始值为100。中间各个room的值有正有负。但在求路径的时候,任何一点的value都不能小于或者等于零,否则这条路就不能通。当然,如果有正环,并且可以从1到n是连通的,那么就一定winnable。 思路:先用floyd判断是否节点的连通性。并且判断1到n是否连通,不连通则hopeless。然后再用bellman-ford来判断1到n是否存在一条正权通路,或者存在正环。当然,dist为负的节点不用去判断,因为如果为负,则这条通路就会成. 阅读全文
posted @ 2012-05-01 18:53 Jason Damon 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 这题比3041要有点难度,主要是在判断节点的时候,要两次扫描输入的矩阵。这个叫我shi也想不到啊。。人家discuss里面给了很好的模板,学着点吧。具体的分析请看下面:转自:http://www.cppblog.com/abilitytao/archive/2009/10/21/99124.aspxSample:4 4*.*..******...*.把行里面连在一起的坑连起来视为一个点,即一块横木板,编上序号,Sample则转化为:1 0 2 00 3 3 34 4 4 00 0 5 0把这些序号加入X集合,再按列做一次则为:1 0 4 00 3 4 52 3 4 00 0 4 0同样加入Y. 阅读全文
posted @ 2012-05-01 00:54 Jason Damon 阅读(234) 评论(0) 推荐(0) 编辑
摘要: http://imlazy.ycool.com/post.1603708.html看了这能很好的理解二分图的最大匹配问题。 这题要会把row和col转换成为两个顶点集,(x,y)看成边。问题就转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题。在二分图中,最小点覆盖数=最大匹配数。所以可以用匈牙利算法解决。 二分图最大匹配的匈牙利算法看了好久,现在终于有点眉目了。加油哟!!#include <iostream>#include <fstream>using namespace std;#define MAXN 501int N,K; 阅读全文
posted @ 2012-05-01 00:41 Jason Damon 阅读(355) 评论(0) 推荐(0) 编辑