仙人掌
仙人掌
课程三要素:
1. Q
2. W
3. Q
1. 三分钟了解仙人掌
不是这个仙人掌!
1.1 仙人掌的定义
定义仙人掌为:任意一条边最多只出现在了一条简单回路的无向、连通的图。
放图:
第一个图是满足性质的。
第二个图不满足性质,因为点
第三个图不满足性质,因为图不连通。
1.2 仙人掌和树的联系
我们可以使用 tarjan
算法对仙人掌进行缩点(请注意这个缩点指的不是缩成一个点,而是将一个环缩成一个点!),这样就能得到一棵树。
1.3 仙人掌求两点之间的最短距离
对于一棵树而言,两点距离是唯一确定的,在
当然也可以使用树上差分+ST表,tarjan
来求解。本例中不详细讲解。
对于一个仙人掌而言,两点距离是不唯一确定的,
这里我们就可以使用知识点 圆方树 来求解了!
那么如何将仙人掌转换成圆方树呢?
我们现在要将这一个仙人掌转化成圆方树。
在圆方树中,所有的边都是有向的。
我们先随便挑一个点作为圆方树的根节点。比如说 5 号节点。
对于任意的一个环,我们都可以在这一个环上找到一个点,使得这一个点距离根节点上的一个点最近。
比如说对于
对于
可以看下图,最近的点已经被加粗了。
下一步,将环变形。
我们任取一个环,比如说环
我们对于上面的这一个环,建立一个方点
我们从头点
然后从方点
现在将这一个图改成从
那么每一个边的权值改怎么定义呢?我们看一开始图的权值。
其中
然后对于其他的点,向
这样我们就把这一个环拆分成了一个圆方树。
其他的环同理拆分,变成了这个样子:
本文来自博客园,作者:yhbqwq,转载请注明原文链接:https://www.cnblogs.com/yhbqwq/articles/xrz_lxy.html,谢谢QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧