![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
knookda
这个作者很懒,什么都没留下…
展开
-
有关反向建图
反向建图基本认识当有向图需要求多个点到一个点的最短距离时除了使用多元最短路的方法还可以通过反向建边转化为单源最短路顾名思义,将边反向反向建边方法用邻接表存图时(用堆优化版dijkstra跑最短路时适用)void add(int a, int b, int c){ e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;}、、、、while(m --){ int x, y, w; scanf("%d%d原创 2022-02-14 14:11:18 · 379 阅读 · 0 评论 -
Cheering up the Cow
而接下来的问题就是,求得最小的忽悠奶牛时间,对于一颗最小生成树,劝奶牛的路线如图,我们可以很明显的得出。(根据其度数特点)做最小生成树得到距离加上所选起始点的交谈时间即可。对于边权,我们处理为。...原创 2022-07-21 14:59:17 · 67 阅读 · 0 评论 -
传递闭包小结
传递闭包概述可以得知两个点之间的连通性(直接联通与间接联通居民算联通)可以把间接联通的点直接联通一般使用floyd算法实现此操作for (int k = 1; k <= n; k ++ ) for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= n; j ++ ) if (g[i][k] && g[k][j])原创 2022-05-05 15:38:33 · 267 阅读 · 0 评论 -
分层图最短路
分层图最短路概念与使用场景分层图:顾名思义就是分很多层的图分层图最短路是指在可以进行分层图的图上解决最短路问题。常用于题目对边的权值提供可选择的操作一般模型:在图上,有k次机会可以直接通过一条边,问起点与终点之间的最短路径。算法思路将最原始的图作为初始图(第零层),根据所给操作将图分层每进行k次操作,那么就将图复制成 k份,第 i 层图代表进行了 i 次操作后的图。分层图构建思路先将图复制成 k+1 份0~k+1对于图中的每一条边 <u,v> 从 ui 到 vi+原创 2022-05-01 20:27:18 · 642 阅读 · 0 评论 -
关于树的遍历与直径
关于树的直径注:以下代码的前提为用邻接表存储的树概念:树中最远的两个节点之间的距离被称为树的直径连接这两个点的路径被称为树的最长链。求法:当没有负权边时可采用搜索的方法找到端点以及直径长度(以下以bfs为例)思路任取一点作为起点找到距离该点最远的一个点u再找到距离u最远的一点v那么u和v之间就是一条直径int bfs(int u){ memset(dist, -1, sizeof dist); q.push(u); dist[u] = 0;原创 2022-04-17 10:30:30 · 314 阅读 · 0 评论 -
连点成图(1)
将n个点连成一张无向图的特殊情况(无重边与自环)完全图此种情况边数最多,为n(n-1)/2条边完全图:每个点与其他各个点连一条边菊花树以一个点为中心其他所有点向他连边此种情况边数最小为n-1条边...原创 2022-03-24 16:37:13 · 399 阅读 · 0 评论