图论
文章平均质量分 50
FindYou.
Code changes the world
展开
-
单源最短路的综合应用
spfa被卡? 那就用SLF优化的spfa原创 2023-12-04 21:19:54 · 561 阅读 · 1 评论 -
单源最短路的建图方式(万能的spfa)
给你n个点m条边,给你一个起始的位置,一个终点的位置,问你这两个点的最短距离。原创 2023-11-29 18:22:55 · 404 阅读 · 0 评论 -
二分图(染色法和匈牙利算法)
二分图又称作二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。简而言之,就是顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。原创 2023-11-28 19:52:09 · 527 阅读 · 0 评论 -
Kruskal算法求最小生成树
2、枚举每条边a b 权重是c 如果当前a 和 b 不连通的话 把这条边加入到集合里面。数据达到了n<=1e5 m<=2e5 kruskal牛逼的地方也是直接用。3、初始化 p[i]=i 之前每个结点的父节点都是它本身。原创 2023-11-27 21:27:43 · 356 阅读 · 1 评论 -
朴素版的DijkstraO(n^2)求最短路(正权值)
1、初始化距离 让全部的dis全都为0x3f 但是要让。在每次迭代的过程中去找到。3、然后根据2找到的这个数。原创 2023-11-27 16:57:27 · 318 阅读 · 3 评论 -
Floyd求多源的最短路
多源就是多个起点, 也就是随便给你两个点,让你求他们两个之间的距离。原创 2023-11-26 20:43:39 · 322 阅读 · 1 评论 -
Spfa求最短路边可为负
SPFA算法中的st数组仅仅只是表示的当前发生过更新的点,且spfa中的st数组可逆(可以在标记为true之后又标记为false)。顺带一提的是BFS中的st数组记录的是当前已经被遍历过的点。已经加入队列的结点就不需要反复的把该点加入到队列中了,就算此次还是会更新到源点的距离,那只用更新一下数值而不用加入到队列当中。但是SPFA算法不可以,由于用了队列来存储,只要发生了更新就会不断的入队,2) Dijkstra算法里使用的是优先队列保存的是当前未确定最小距离的点,目的是快速的取出当前到源点距离最小的点;原创 2023-11-26 17:38:11 · 382 阅读 · 1 评论 -
Bellman_ford边数的限制
为什么写 > 0x3f3f3f3f / 2呢 因为是存在负权边 之前这个点的前一个点是0x3f3f3f3f 但是他们的边权值是负的 因此他可能就小于0x3f3f3f3f 了 因此写 > 0x3f3f3f3f / 2就可以。2、迭代k (k为边数的限制)次 然后拷贝memcpy(beifen,dis,sizeof dis)把dis里面的数据备份到beifen里面 防止下面的操作被更新后的dis干扰。1、让所有的距离都置为0x3f3f3f3f 让dis[1]=0。这个算法的效率是很低的 用。原创 2023-11-26 10:38:56 · 365 阅读 · 1 评论