第三类题——图论类

   图论方面的题目,感觉都是比较基础的。除了08年的欧拉回路,考的最多的就是最小生成树的Prim或者Kruscal算法。大家在平时的训中
要注重《数据结构》中关于图论所涉及的基本算法,编熟了这些基本算法,感觉应付复试应该不成问题。

 

一,2005年 畅通工程(http://acm.hdu.edu.cn/showproblem.php?pid=1232

  其中要求的其实就是最小连通图的边数,一般就是最小生成树的边的个数(即:N个节点的最小生成树的边数为N-1)。根据给出的边情况,可能等价于先求出连通分量的个数M,所需的M-1条边最小生成树。

  技巧:在同一个连通分量(集合)的节点对应的数组的值相同。合并集合,等于把他们对应的数组值设为相同即可。

 

 

二,2006年 还是畅通工程(http://acm.hdu.edu.cn/showproblem.php?pid=1233

  利用的是Kruscal算法,可以说是比较典型的求最小生成树的题目。使用了直接插入排序算法进行排序,技巧和上一个算法的相似,也是数组标记。

 

 

   我一开始利用prime算法编写了一个,但放上去报错。至今没有找到错在哪里,下面贴上代码,希望有人能帮我看看。在此谢过了...

 

 

三,2007年 畅通工程(http://acm.hdu.edu.cn/showproblem.php?pid=1863

   还是一样的,没有被AC,但机子上运行是正确的。天哪~ 怎么办哟!老是这个问题...

 

四,2008年 欧拉回路(http://acm.hdu.edu.cn/showproblem.php?pid=1878)

此题是一道简单的图论题。判断一个图是否存在欧拉回路的充要条件是:1)每个点的度数为偶数,2)图是连通

 

定理的证明参照:http://zh.wikipedia.org/wiki/%E4%B8%80%E7%AC%94%E7%94%BB%E9%97%AE%E9%A2%98

 

粗略看了下给的答案解析,对于这道题的答案比较复杂。我的答案(数组的方法)虽然简单,但好像只能适用于无向图。以后做题的时候还得好好注意下!

 

 

五,2008年 继续畅通工程(http://acm.hdu.edu.cn/showproblem.php?pid=1879)
   做这道题经历了三个阶段,总结了三条经验:

1)逻辑思维构想阶段:刚开始想得过于复杂,越想觉得这道题越难。后来再仔细看了看题目,换了个角度,其实可以直接令已建的路成本为0,加以考虑。

2)节省步骤,跳跃式节省运行时间:另它为0,再插入数组中。再加入处理,还不如直接将它视为连通就可以了。

3)利用STL,节省运行时间:前段时间对STL并不是非常重视,直到今天遇到这个问题才发现,它的排序效率和操作步骤是多么的节省时间。比我的直接插入排序要快的多,看来要好好学习一下了!(拼命捡呀...)

以下是被AC的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值