
图算法
文章平均质量分 94
Apale_7
这个作者很懒,什么都没留下…
展开
-
最小生成树——kruskal
今天是我第一次用克鲁斯卡尔a题。纪念一下。 kruskal算法是一种贪心算法,它每次取权重最小的边并判断该边的两个端点是否属于同一棵树,显然当端点属于同一棵树时加上这条边会使这棵树出现环,此时舍去该边;当端点不属于同一棵树时,将该边加入树中,因为该边的权重是当前最小的,最后得到的一定是最小生成树。 首先要判断两个点是否在同一棵树上,这就要用到快速查询数据...原创 2018-03-07 22:31:45 · 347 阅读 · 0 评论 -
倍增法求LCA(最近公共祖先)
实在太蠢了搞不定ST表o(╥﹏╥)o,只能学个倍增法了。 讲倍增法前先看看暴力法。 第一步肯定是dfs求每个点的深度。 查询lca(a,b)时,先把ab中深度较大的点往上移,移到两个点深度相同为止; 现在两个点深度相同了,于是两个点一起往上移,直至移到同一个位置,即最近公共祖先。 倍增法其实就是在暴力的基础上,对把两个点上移的过程进行倍增操作(因为一步一步走真的很慢啊) 倍增操作即:如...原创 2018-07-14 00:50:54 · 349 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 J - Maze Designer
题目链接:https://nanti.jisuanke.com/t/31462 题意: 在一个N*M的空地上,建墙造一个迷宫,使得迷宫的耗费最小,且迷宫中的任意两点之间只有一条路,题目保证每组数据的迷宫唯一。 输入迷宫中两个点的坐标,输出两点间的距离 思路:任意两点间只有一条路,显然是一棵树。在地图上建最大生成树,就可以使得墙的耗费最小。两点间距离就是在树上跑LCA #include &...原创 2018-09-13 21:00:20 · 213 阅读 · 0 评论