图论建模
ABC437G
ABC437G - Colorful Christmas Tree
一道题建了三个新图,算上原树总共四个图 ww
- 给定 点树,每个节点初始被染成 012 三种颜色之一。
- 执行以下操作 次:选择一条当前存在、且两端点颜色不同的边,将其删除,然后将这条边两端点的颜色,按照 0 1 2 0 的循环顺序变为下一种颜色。
- 判断是否存在一种合法的删边顺序,能够把树上的边全部删完。若存在,输出之。
Step.1 转化为匹配
在全过程中,顶点 处于颜色 时参与删除,这个操作次数确定,记为 。这给定了每个点在特定颜色下需要消耗的额度,因此这本质上是一个匹配问题。
建图:
- 点:将一个点 拆成 个点 。
- 边:对于一条边 ,如果 和 颜色不同,则连边 。
在这张新图上,若能做到完美匹配,才可能有解。
Step.2 转化为最大流
注意到树是一张 二分图 (将树按深度的就奇偶性拆分为左部点和右部点),转化后的新图也是二分图, 匹配可以转化为最大流求解。
建图:
- 点:
- 源点 和汇点 。
- 对于树上的每一个节点 ,在网络中拆分成 3 个状态节点 。
- 边:
- 对于所有偶数深度的点 ,,容量 ,表示操作次数限制。
- 对于所有奇数深度的点 ,,容量 ,表示操作次数限制。
- 对于一条边 ,若 为偶数深度, 为奇数深度,且 和 颜色不同,则 ,容量 1,表示合法匹配。
下面证明,原问题有解 最大流等于 。
Step.3 转化的充要性
必要性:如果存在一种合法的删边顺序,那么对应的每次操作都能找到一条从源点到汇点的路径,这时最大流必定等于 。
充分性:只需构造一组解。如果能将 时间先后限制 建出一张有向图,并证明它是 DAG,那么其拓扑序就是所需操作序列。
建图:
- 点:原树的 条边。
- 边:即 依赖关系 。对于原树中的顶点 ,其颜色变换是有顺序的,这就给 上的所有相连边规定了一个局部时间先后顺序。如果边 分配到的颜色比 的颜色更早出现,我们就连一条有向边 , 表示 必须在 之前被删除 。 当然,如果 分配到的颜色与 的颜色相同,这个顺序可以任意交换,我们钦定了一个删除顺序并无妨。
下面只需要证明新图无环。
反证,假设存在一个有向环:。根据我们的建图规则,每一步 必定发生在这两条边的公共顶点上,记这个公共点为 。我们将环上的共享顶点按顺序写出来,合并去重,得到一条 walk 。
假设 ,即全部操作发生在一个点 上,这操作当然不可能出现环。
否则,考虑到这是一棵树,如果能找到这样的一个 walk,必然在一个地方掉头了,即存在 的片段。这意味着,我们先删除了边 ,之后又删除了边 。
然而,考虑最大流的性质:任何满流方案中,边 只会被删除恰好 1 次,它在整个时间线上只对应唯一的一个事件,就不可能在依赖环中出现两次。出现了矛盾。
因此假设不成立,新图是 DAG。其拓扑序就是所需操作序列。
ABC461G
ABC461G - Graph Problem 2026
点 边简单无向图,在点权 满足如下条件时,求 的最大值。
- 对每个点 ,。
- 对每个边 ,。
拆点,令 ,并钦定 ,问题将三个权选择化为每个点的选与不选。希望所选点最多。
考虑边的约束 ,拆分:
- ,选 ,不选 。
- ,选同侧的 或 。
- ,选 ,不选 。
在新图中连交叉边 和 得到二分图。原问题等价于求二分图的 MIS。
分层、拆点与建立虚点
【CF1941G】坐地铁,求从指定点开始,到任意一点的最少换乘次数。把线路也看做点,01 BFS。
【P4568】无向带权图。你可以选择图中最多 条边,将其权值修改为 。计算从指定起点 到终点 的最短路。。建 层图,每层图向下一层图的边权为 。
【CF1473E】给定一个 点 无向边的图。一条路径的权值为 。求从 号点到每个点的最短路。可以把路径的权值理解为:必须将路径上的任意一条边不算代价,任意一条边算 2 倍代价。这样我们就把对两条极值边的贡献方式转化成了所有边的贡献方式。更加统一,易于处理。这两种特殊代价没有先后顺序,故建 层图: 边权为 , 边权为 , 边权为 , 边权为 。答案为第 层与第 层图对应的答案的较小值。
【CF2014E】无向带权图。在 个顶点中, 个顶点各有一匹可用的马。骑马时,行进时间减半。甲从顶点 1 开始,乙从顶点 开始。求甲和乙最早在某个顶点相遇的时间。
【2024 ICPC 网络赛 II E】走迷宫,从 1 走到 。给定迷宫中有 个杀手机器人,机器人通过的路径长度不能超过 ,但走过的路径可以撤销。每秒玩家与杀手机器人同时移动,两者始终不能相遇。问能否走到终点。奇偶分层,对于某个点,玩家到达步数是 ,机器人到达步数是 ,则如果 与 的奇偶性相同,且 ,这个点就不能经过。
CF1245D
- 给定 个点,每个点 有点权 ,任意两点 之间有无向边权 。
- 可以花费 激活点 ,或者花费 连接点 和点 。
- 求使得图上所有点都与激活点连通的最小总花费。
建立虚点,连接点 的边权 ,求全图 MST。
ABC416E. Development
个城市, 条双向道路,以及 个机场。第 条道路连接城市 和城市 ,通行时间为 。机场位于城市 ,有机场的城市之间可以以 时间互相到达。
个查询:
- 在城市 和城市 之间新建一条双向道路,通行时间为 。
- 在城市 新建一个机场。
- 计算 。
建立虚点,连接机场的边权 。查询时枚举中转点,复杂度 。
二分图与基环树
给定一个二分图 ,其中:
- 左部点集与右部点集大小相等,即 。
- 左部点中的任意顶点 ,其度数恒为 2。
- 图 中允许存在重边(即一个 可能与同一个 连接两条边)。
求二分图 中完美匹配的数量。
构建一个全新的图 :
- 的点集为原图的右部点集 (共 个点)。
- 的边集由原图的左部点集 构成。由于每个 都关联恰好两个右部点 和 ,把 看作是连接 和 的一条边(可能是自环)。
是基环树森林,完美匹配意味着为 中的边定向,使得每个点的入度恰好为 1。
对于每个连通块,若点数 = 边数,则无解。若连通块满足点数 = 边数,则贡献为 2。
例子:1770D
