- 博客(3)
- 收藏
- 关注
原创 最小生成树kruskal算法(并查集)
还是图的算法,最小生成树。 kruskal算法和dijkstra算法有异曲同工之处,都有贪心的思想在其中。 先读入边集,将所有的边排序(从小到大),依次加入另一个空集(最小生成树),如果和其中已有的边形成回路,就跳过,看下一条边。用的是并查集判重。最后的解即为最小生成树。代码如下:#include <iostream>#include <cstdio>#include <algorithm>
2015-10-06 20:00:01
420
原创 堆(优先队列)优化dijkstra(邻接矩阵)
上篇博客大家学习了最短路的两种基本算法,忘了告诉大家,floyd可以完成有负权值的最短路,而dijkstra则不行。若要想要更优的进行负权值最短路,请期待我的SPFA详解。现在开始堆优化dijkstra的讲解。其实只要理解了dijkstra的本质,这也就不难了,就是把查询最小dis值的过程用堆实现即可。具体代码如下:#include <iostream>#include <algorithm>#
2015-10-05 15:58:16
1844
1
原创 最短路floyd与dijkstra浅析
为了备战noip,又将图论的基础知识拿出来练了练。 因为本文主要对象为初级选手,已简单易懂为宗旨,高级大犇不要喷。。靴靴。。。 首先,floyd算法:此算法是最短路最朴素的办法,用记忆化搜索的思想,枚举起步点(i),转折点(k),终点(j),三重循环,完成最短路,时间复杂度为o(n^3)。因为方法较为暴力,所以编程复杂度较低。下面贴上程序段for (i=1;i<=n;++i)//起点
2015-10-04 19:58:42
1153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人