
图论
1
hesorchen
这个作者很懒,什么都没留下…
展开
-
SPFA判负环
SPFA和Dijkstra都是解决最短路问题的算法,都有各自的特点:SPFA:1.可以判断是否存在负环2.按层级松弛3.有些数据可以卡掉SPFADijkstra:1.效率稳定2.不可以解决负边、负环的图一般处理无负边的最短路问题时,使用Dijkstra。在判断是否存在负环的时候使用SPFA。这里主要讲如何使用SPFA判断正负环。原理1.一个n个点的连通图中,经过n-1条边肯定可...原创 2020-05-07 08:14:04 · 6006 阅读 · 0 评论 -
POJ3660传递闭包
貌似以后数学里会学到,不过还是先水一篇博客吧传递闭包传递闭包一般用来解决一类具有传递性的问题。定义:在交际网络中,给定若干个元素和若干对二元关系,且这些关系具有传递性,通过这些传递性推导出尽量多的元素之间的关系的问题叫做传递闭包。也就是用已知条件来推出其他所有的可知条件。数独应该就是使用了传递闭包的一个例子。再比如,A>B,B>C,通过传递闭包,我们就可以得到A>C。将...原创 2020-05-06 15:48:38 · 5228 阅读 · 0 评论 -
几种ACM常见的存图方式
几种ACM常见的存图方式:1.邻接矩阵:我之前一直在用的就是邻接矩阵,非常简单,不过占用空间比较多,另外遍历时间比较长,因此不推荐。2.vector实现邻接表:struct node{ int end, w;} temp;vector<node> start[10010];int main(){ int u, v, w; while (cin ...原创 2020-05-04 07:40:06 · 5449 阅读 · 0 评论 -
51nod树的直径 图论,搜索
题目链接:传送门选择任意一个点跑到最远的点A,再以这个最远的点A为起点跑到最远的点B,AB之间的节点数就是树的直径。原理:第一遍搜索肯定会跑到一个叶节点,从任意一个叶节点跑到最远的点,这个距离就是直径。BFS和DFS都可以实现。BFS代码:struct node{ ll v, w, next;} edge[200010];ll ct = 1;ll head[200010]...原创 2020-05-04 07:38:44 · 5198 阅读 · 0 评论 -
prim算法
最小生成树板子题:POJ 1287最小生成树的prim算法一直没学,而且好像最短路也会用到这种思路,于是今天学了一下,找了很多博客,算法图解都挺好的,但是代码实现就很复杂,最后找了篇模板题题解博客看了一遍才懂代码实现。prim算法其实思路很简单,就是不断的找当前距离已生成的树最小的结点加入树,知道所有结点都入树就完成了。ps:如果算法思路都不清楚的话,可以看看这篇博客的图解:传送门(代...原创 2020-03-01 22:33:26 · 5231 阅读 · 0 评论 -
邻接矩阵
邻接矩阵是一种用来表示连通图的二维数组比如有若干行数据a,b,c,表示a结点与b结点相连,权值为c1 2 52 3 72 4 84 5 113 5 101 5 6我们以a为纵轴,b为横轴,可以建立下表a/b12345105--625078-3-70-104-8-01156-10...原创 2020-03-01 22:19:13 · 8449 阅读 · 8 评论