algorithm
kerman_jt
个人网站:kermanjt.com
展开
-
最小生成树
最小生成树的两种最常见的算法Kruskal和prim。其他的我也不会啊!先来说简单的Kruskal算法,它本质上是一个贪心的策略,每次选权值最小的边,当然前提是边的两个顶点不在同一颗树里面。因此首先根据权值大小按从小到大的顺序排序,然后根据条件开始选择直到所有顶点都在一颗树内或者有n-1条边为止。这里还用并查集进行了优化。并查集不了解的可以看并查集Kruskal算法:#include...原创 2019-03-06 17:47:43 · 86 阅读 · 0 评论 -
单源最短路径
这里讲两个算法:dijkstra和spfa。floyd就不说了复杂的太高达到o(n3),不过多源用它还是很好的。先来spfa,这个算法可以说是很快了,但是是玄学算法没人能解释。o(ke),不过一般出题人都会卡它...这边用的是队列,首先用数组dis记录起点到每个结点的最短路径,用邻接表来存储图,用vis数组记录当前节点是否在队列中,用队列来保存待优化的结点,优化时每次取出队首结点,并且用队...原创 2019-03-10 13:34:47 · 121 阅读 · 0 评论 -
并查集
并查集的操作有三步,初始化,查找祖先与合并。并查集的初始化是让每个点的祖先指向自己。for(int i=1;i<=n;++i) f[i]=i;下面来写查找祖先的find函数。int find(int x){ if (x == f[x]) //如果是祖先就返回 return x; else //如果不是就递归进行查找 ...原创 2019-03-08 17:12:13 · 88 阅读 · 0 评论