分层图(最短路)

分层图使用的场景

一些图论题,比如最短路、网络流等,题目对边的权值提供可选的操作,比如可以将一定数量的边权减半,在此基础上求解最优解。
例如:
一本通提高篇 1495【例 2】孤岛营救问题

算法思路

根据是否进行题目提供的操作以及操作次数的不同,会产生非常多的情况,如果考虑何时使用操作,情况更是多。如果将在图上求解最短路看成是在二维平面上进行的,引入进行操作的次数 k 做为第三维,那么这个三维空间就理应可以包含所有的情况,便可以在这个三维空间上解决问题。

每进行一次操作(k+1),除了操作的边,其他边没有任何变化,在 k=0,1,2,…,时图都是一样的,那么就将图复制成 k+1 份,第 i 层图代表进行了 i 次操作后的图。

每相邻两层图之间的联系,应该决定了一次操作是发生在哪条边上(何时进行操作)。根据操作的特点(对边权的修改)可以 i 层点到 i+1 层点的边来表示一次操作。

例如:有带权边 <u,v> = w, 可选操作:修改权值为0
分层图略讲(范老师的题解)
那么对于分层图的构建步骤可以描述为:
1、先将图复制成 k+1 份 (0 ~ k)
2、对于图中的每一条边 <u,v> 从 ui 到 vi+1 建立与题目所给操作相对应的边(i=0,1,…,k)

k代表了进行操作的次数,而每层之间点的关系代表了何时进行操作。
分层图示意图:
分层图略讲(范老师的题解)
无向图一样处理,因为可以完全看成有向图。
时间复杂度:O(k*(m+n)log(n)) 吧
一个裸题:
洛谷P4568
类似题目
洛谷P2939

相关文章:

  • 2021-12-05
  • 2021-08-30
  • 2022-03-09
  • 2021-10-19
  • 2021-11-14
  • 2022-12-23
  • 2021-10-15
  • 2021-08-07
猜你喜欢
  • 2021-06-20
  • 2021-10-18
  • 2021-09-27
  • 2021-11-01
  • 2022-02-07
  • 2022-12-23
  • 2021-04-04
相关资源
相似解决方案