摘要: 1 #include <iostream> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 const int N = 509,M = 100009; 6 int n1,n2,m,idx,res; 7 int 阅读全文
posted @ 2021-10-22 21:35 Modest-Hamilton 阅读(93) 评论(0) 推荐(0)
摘要: 1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 5 const int N = 100009; 6 int h[N],e[2*N],ne[2*N],idx; 7 int n,m,color[N]; 8 void 阅读全文
posted @ 2021-10-22 10:54 Modest-Hamilton 阅读(33) 评论(0) 推荐(0)
摘要: Kruskal和prim不同的点在于prim每次都是找离集合距离最小的点,Kruskal找的是图中最短的边,如果边的两端不连通,则加入生成树中,属于是贪心的策略。 思路: ①每次都找最短的边,因此首先对所有的边进行从小到大的排序,因为排序,所以Kruskal的时间复杂度下限就已经是O(nlogn)了 阅读全文
posted @ 2021-10-22 10:28 Modest-Hamilton 阅读(45) 评论(0) 推荐(0)
摘要: Prim:每次都选一个距离集合最小的点加入集合中,最终形成的就是最小生成树(与Dijkstra最大的区别,其余代码和Dijkstra没啥不同) 因为和Dijikstra思想差不多,所以也可以用堆优化,但是基本都不用,因为有更好的Kruskal 1 #include <iostream> 2 #inc 阅读全文
posted @ 2021-10-22 10:15 Modest-Hamilton 阅读(46) 评论(0) 推荐(0)