图论
某六十九岁合法萝莉
有那么多优秀的学长,我也好想成为他们中的一员啊....
展开
-
链式前向星和优先队列实现有向图/无向图的最短路)
链式前向星和优先队列实现有向图/无向图的最短路(解题日志)先看例题:poj3268银牛节题目大意:各个农场派一只奶牛去指定农场参加银牛节,计算在选择最优路径时耗费最多时间。题目解析:由于m为10^5本题用普通的邻接列表必然超时,因此学习新的方法链式前向星,相比较前向星而言时间复杂度仅为O(m)。算法解析:该算法是将起点相同的路径归为一类,然后每个路径节点的next指向上一节点,第一个节点则指向-1。样例实现最终图示(以x为起点):诶嘿(*・ω< ) 。添加路径代码:void add(原创 2021-05-20 19:54:54 · 384 阅读 · 0 评论 -
最小生成树两种常用算法
最小生成树的简易实现一:Kruskal 算法①算法核心思想:Kruskal是实现最小生成树比较简单的一种算法。该算法主要是应用了并查集的思想,先对图各边进行按权值从小到大排序,再孤立各个点,然后按序遍历各边将在集合外的点并到集合里,形成一个最小生成树复杂度最少为O(nlogn)。②例题P2504聪明的猴子AC代码:#include<bits/stdc++.h>using namespace std;struct node{ int x,y; int len;}w[10000原创 2021-05-11 18:48:30 · 2905 阅读 · 0 评论 -
欧拉图的简易实现
欧拉图的简易实现今天学习了欧拉图相关知识,感觉网路上的教程都过于繁琐(最后还是自己看源码弄懂的),在此谈谈自己对欧拉图的理解。①欧拉图的作用:欧拉图是为了解决经过图的各个连接图的线路问题,例如经过各点的连线方案(ps:实际上就是经过各点画一条线,线不能重叠),至于欧拉回路和欧拉通路的区别,在此不多赘述,反正实现起来都一样。②欧拉图的实现:实现欧拉图首先应该找一个有奇数连线的点(就是进去后无法出来的点)作为起点,如果点有两个以上,就表示没有能够实现欧拉回路的方案(划线必定重叠),如果没有也没有关系,原创 2021-04-27 18:36:42 · 1101 阅读 · 0 评论