一些简单图论问题
0. 前置
- 图论基础内容
- 最短路
- 最小生成树,次小生成树
- 邻接矩阵存图,边表存图
- 差分约束
- 矩阵乘法,矩阵快速幂
- 二分图匹配
- 最小割定理
- 最大独立子集和最大团的转化
- 有向图强连通分量
- 边双连通分量
- 点双连通分量
- 缩点
- 2-SAT
1. 一类基于矩阵乘法的问题
我们记 表示矩阵 的第 行第 列的元素 .
先说一下此处邻接矩阵的定义(设邻接矩阵为 ):
- 无权图邻接矩阵:若 有边,则 ,否则 .
- 有权图邻接矩阵:若 有一条边权为 的边,则 ,否则 .
1. Problem 1
一个 个点 条边的无权图,求 到 经过 条边的路径数量 .
先考虑一张图的邻接矩阵 ,若 ,那么 即为答案 .
考虑 ,根据矩阵乘法的定义:
因为 的每个元素要么为 ,要么为 ,从而,当且仅当 , 都有边时, 才等于 .
不难发现,当 时,答案恰好为 .
我们再考虑 :
类似的,当且仅当 ,, 都有边时, 才等于 .
不难发现,当 时,答案恰好为 .
一般的,是否有答案为 ?
答案是肯定的,分析类似 .
重边自环问题不大 .
2. Problem 2
一个 个点 条边的图,求 到 经过 条边的最短路 .
这个问题和 Problem 1 非常相似,先考虑一个 dp 方法 .
令 表示通过 条边到达 的方案数,则:
其中 是图的邻接矩阵 .
直接暴力 dp 肯定是得不到满分的,我们对 Problem 1 设计一个类似的 dp 算法(状态类似):
发现它们两个非常的相似,所以考虑定义一种新的「矩阵乘法」运算,我们定义两个矩阵 与 之间的「新矩阵乘法」为:
其中 是 的矩阵, 是 的矩阵, 是 的矩阵 .
不难验证 运算有结合律:
上矩阵快速幂,时间复杂度 .
类似题目
- 给定一张 个点 条边的图,求边数恰好为 的路径上最大边最小是多少 .
定义:
- 给定一张 个点 条边的图,求边数恰好为 的路径上最大边最小是多少 .
同理 - 给定一张 个点 条边的图,求边数不超过 的路径上最大边最小是多少 .
对每个点 都连一条 边权为 即可 . - 给定一张 个点 条边的图,求边数在 的路径上最大边最小是多少 .
设原矩阵为 ,每个点 都连一条 边权为 之后的矩阵是 .
观察矩阵乘法 的定义,可以发现答案就是 .
2. 一类二分图匹配问题
1. Problem 1
问能否通过交换方格图的某些行列,使得对角线上的数全部是 .
把每个格子和其对应对角线点连边跑二分图匹配即可 .
2. Problem 2
的方格图,若干地方有障碍,问最多能放多少个物体,使得这些物体彼此之间不能互相看见(物体有视力,物体的视线会被障碍挡住)
把不能看到的点连边,然后跑二分图匹配
3. Problem 3
男 女,给出哪些对可以跳舞,每次开始播放歌曲,某些对就会跳舞,跳舞之后,每个男如果存在一个没有跳舞的女且能够跳舞,他就会找该女更换舞伴
现在希望:至少有一对人跳舞 并且跳舞后没有人愿意改变舞伴
输出任意一种方案
当全部匹配或者一人匹配失败时答案就出来了 .
杂题
咕
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/14407416.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】