![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
知识点
Titanzyh
这个作者很懒,什么都没留下…
展开
-
收藏(持续更新中)
浏览大佬的博客,感觉有很多有用的东西,先记下来: C++ STL 总结: http://www.cnblogs.com/biyeymyhjob/archive/2012/07/22/2603525.html(倾向于文字描述定义、作用) http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html(倾向于代码实现) (以上20原创 2017-08-19 10:50:21 · 556 阅读 · 0 评论 -
Kruskal算法
Kruskal算法是基于贪心的思想得到的。首先我们把所有的边按照权值先从小到大排列,接着按照顺序选取每条边,如果这条边的两个端点不属于同一集合,那么就将它们合并,直到所有的点都属于同一个集合为止。(并查集)。换而言之,Kruskal算法就是基于并查集的贪心算法。#include<iostream>#include<cstdio>#include<cstring>#include<algorit原创 2017-09-03 19:50:04 · 709 阅读 · 0 评论 -
次小生成树 prim和kruskal
prim: 先用prim求出最小生成树T,在prim的同时,用一个矩阵maxd[u][v] 记录 在T中连结任意两点u,v的唯一的路中权值最大的那条边的权值,这是很容易做到的,因为prim是每次增加一个结点s, 在此需要保存节点和其父节点,采用DP,则最大权值要么是新加入的边,要么是父节点到起始点的采用DP算出来的距离。即: maxd[j][p] = max[p][j] = lowc[p原创 2017-09-03 19:59:40 · 557 阅读 · 0 评论 -
floyd算法求最短路
从任意节点i到任意节点j的最短路径不外乎2种可能,1是直接从i到j,2是从i经过若干个节点k到j。所以,我们假设Dis(i,j)为节点u到节点v的最短路径的距离,对于每一个节点k,我们检查Dis(i,k) + Dis(k,j) < Dis(i,j)是否成立,如果成立,证明从i到k再到j的路径比i直接到j的路径短,我们便设置Dis(i,j) = Dis(i,k) + Dis(k,j),这样一来,当我们原创 2017-09-03 20:34:50 · 540 阅读 · 0 评论 -
子集和问题
转载于:http://blog.csdn.net/clove_unique 子集和问题 【问题描述】 子集和问题的一个实例为〈S,t〉。其中,S={ x1, x2,…, xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得子集S1和等于c。 【编程任务】 对于给定的正整数的集合S={ x1, x2,…, xn}和正转载 2017-08-22 15:11:14 · 1288 阅读 · 0 评论 -
简单拓扑排序
找到入度为0的顶点,入队,删除它和它的出度,重复操作;如果我删除的顶点数小于我输入的顶点数,则有向图中有回路,排序失败。##include<cstdio>#include<vector>#include<queue>using namespace std;vector<int>a[100];int indegree[100];queue<int>q;int n,m;void addc原创 2017-09-05 18:48:52 · 357 阅读 · 0 评论 -
Prim算法求最小生成树
cost[i][j]存i和j之间的距离,vis[i]记录i点是否被访问,lowc[j]存所有与j点连接的边的最小的权值。 每次找最小的lowc[j]。 然后。。。最小生成树 #include <iostream>#include <cstring>#include <queue>using namespace std;const int INF=0x3f3f3f3f;const in原创 2017-08-29 19:54:48 · 578 阅读 · 0 评论