![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
zhaofukai
行有不得,反求诸己
展开
-
UVA 10369 Arctic Network
<br /> 这道题实际上求最小生成树,把各个边按大小排序后,求第P-S条边。刚开始做的时候,思路是这样,但就是求边的时候求错了,老是WA,最后才知道是求第P-S条边。因为这是一个稠密图,求最小生成树用prim算法,效率还可以.<br />程序代码:<br />#include<iostream>#include<cstdio>#include<cmath>#include<cstring>using namespace std;#define MAXN 510#defin原创 2011-03-13 13:28:00 · 674 阅读 · 0 评论 -
一个图的两棵最小生成树,边的权值序列排序后结果相同
把一个连通无向图的生成树边按权值递增排序,称排好序的边权列表为有序边权列表,则任意两棵最小生成树的有序边权列表是相同的。(算法导论23.1-8) 证:设最小生成树有n条边,任意两棵最小生成树分别称为A, B, 如果e是一条边,用w(e)表示该边的权值。A的边按权值递增排序后为a1, a2,……an w(a1)≤w(a2)≤……w(an)B的边按权值递增排序后为b1, b2,……bn w(b1)≤w(b2)≤……w(bn)设i是两个边列表中,第一次出现不同边的位置,ai≠bi不妨设w(ai)≥w(bi)转载 2011-03-14 17:31:00 · 6028 阅读 · 1 评论 -
UVA 10801 Lift Hopping
<br />题意:给n个电梯,电梯可在m个层停下,每个电梯的速度不一样,给出起点0,终点Goal,求从起点到终点花的最少时间。<br />这道题实际是求最短路的问题,也是隐式图的搜索,与658 - It's not a Bug, it's a Feature!是同一类问题。我们设从0层开始,先找出从0层所能到达的各个层(状态),放入队列,然后从队列中找出用时最少的状态继续进行找,直至找到Goal层,结束或队列空结束,算法思想类似dijkstra。<br />程序代码:<br />#include<iostr原创 2011-03-16 19:21:00 · 1277 阅读 · 0 评论 -
UVA 658 - It's not a Bug, it's a Feature!
<br />这道题题意是:某个软件有n个漏洞m的补丁,而每个补丁修复漏洞有前提条件,即有些漏洞必须存在或不存在,每个补丁的修复时间各不相同,现在有n个漏洞,让你求出把这n个漏洞全部修复所花的最少时间。<br />这道题实际是个最短路问题,可用隐式图搜索来做。这道题比较有技巧性的地方是判断补丁能否修复当前漏洞,如果直接用字符串,会超时,这里我借鉴了别人的经验,用两个整数的位来表示,第一个数把+的位置成1,第二个数把-的位置成1。<br />例如:++--0-+- --++--00,我用f[2]表示前边的串,b原创 2011-03-16 20:14:00 · 1911 阅读 · 3 评论 -
HDU 3776 Task
这是一道查分约束方程的题。难点在于如何建图,task i starts at least A minutes later than task j得到的方程是:tj - ti 程序代码:#include#include#include#include#includeusing namespace std;#define MAXN 110#define INF (1原创 2011-03-26 10:00:00 · 566 阅读 · 0 评论 -
341 - Non-Stop Travel
其实这是一道很简单的最短路问题,直接套用Dijkstras算法就可以。可是却错了2次,刚开始一直找不到错,真有点想看解题报告的冲动,但还是静下心来想想为什么会出错,最后发现代码中没有把w[i][i]初始化为0,改过来后AC了。现在做题,不是没想法、思路,而是写出来后就是WA,很郁闷,有时实在不想找了,就看一下题解,一看就恍然大悟,但这根本解决不了问题,以后碰到了还是调不出来。真到了现场的比赛,原创 2011-06-21 22:36:00 · 448 阅读 · 0 评论