图论
night_watcher
这个作者很懒,什么都没留下…
展开
-
HDU 4612
给一个连通的无向图,随意添加一条边要使添加后的桥最少。缩点后求出树形图的直径,总的强连通分量-直径就行了。 要手动扩栈,之后用C++交。 第一次用Tarjan算法,之前一直在逃避图论,真去学了,也没什么难的,代码敲了两遍,第二次果断1A了,一如做过的题,还有必要再做一遍。 #pragma comment(linker,"/STACK:102400000,102400000") #includ原创 2013-08-11 18:38:53 · 512 阅读 · 1 评论 -
POJ1860 Currency Exchange(图论|最短路)
题目意思其实就是要找一个正环,这里用到bellman-ford算法(其实什么算法无所谓,能找到那个环就可以),bellman-ford思想就是如果有v个定点,放缩v-1次,每次放缩用所有的边去更新其他节点,那么如果再更新发现还可以改变某些节点的权值,显然就是存在环(正环负环都一样)。 #include #include #include using namespace std; #define原创 2014-01-11 11:39:49 · 451 阅读 · 0 评论 -
POJ 2253 Frogger(图论|最短路)
题意就是求所有可行通路里两点距离最大值的最小值,说起来比较绕,其实也就是说青蛙所有跳法里面每一种路径的最大跳的最小值。 裸一个floyd维护其 s 到 e 的最小值即可 /* 裸一个floyd,注意这里的边权不是相加而是取最大数 */ #include #include #include #include using namespace std; #define N 220 #define原创 2014-01-11 21:06:05 · 412 阅读 · 0 评论 -
POJ 3259 Wormholes(图论|最短路)
这题跟跟上一题思想类似,即要找一个负环,但具体实现有些不同: 1.地上的同路是双向的,但虫洞是单向的,构图需要注意。 2.这道题没有一个开始节点,但我们知道如果出现负环,那么就会一直减下去,所以开始的时候可以把所有点的距离取任意值,这也是为什么很多人写这道题根本没有数组的初始化。 #include #include #include using namespace std; #de原创 2014-01-11 15:11:36 · 423 阅读 · 0 评论 -
POJ 1062 昂贵的聘礼(图论|最短路)
如果去掉等级的限制,那么就可以抽象成一个图,每一个交易物品可以是一个定点,其权变就是交易的金额。 设一个初始定点0代表什么都没有,所以从0到一个物品也就是这个物品的直接价格。 从一个顶点到另一个顶点的权边也就是说在拥有了 s 后要得到 e 的金钱。 由此可以建图求解,注意是要从0走到1(酋长的物品) 此外,就是要处理等级限制的问题(等级制度害死人啊),这里没有一个一劳永逸的解法,但是由于等原创 2014-01-11 21:13:45 · 419 阅读 · 0 评论