分层图总结

Posted luyiming的小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分层图总结相关的知识,希望对你有一定的参考价值。

分层图

分层图主要就是通过将图分为几层,每层内部都有边,然后各层之间也有边,用于解决对边权进行操作且操作数少的题目。

Example

给一个无向图,求\\(1 \\to n\\)的最短路径,其中可以选择不超过\\(k\\)条边让边的边权变为一半。 \\(n \\le 50,m \\le 1000,k \\le 50\\)

考虑建立\\(0,1,2,\\cdots,k\\)层共\\(k + 1\\)层图。定义\\(P(x,y)\\)为第\\(y\\)层的点\\(x\\)。每层内部都按照原图连边,然后考虑边\\((u,v) \\in E\\),对于第\\(i\\)\\(i + 1\\)层(\\(i + 1 \\le k\\)),连无向边\\(P(u,i) \\to P(v,i + 1)\\)\\(P(v,i) \\to P(u,i + 1)\\),边权为\\(w / 2\\)。然后跑一遍最短路,答案为\\(\\min_{i = 0} ^ k \\{dis_{P(n,i)}\\}\\).

如果用pq优化的Dijkstra实现,时间复杂度为\\(\\mathcal{O}(mk + mk \\log{mk})\\)

Problem

一个无向图,求\\(S \\to T\\)的最短路,一条路径的长度定义为路径上的边权和减去最大边权加上最小边权。

发现其实就是\\(\\sum_{w \\neq w_{\\max},w \\neq w_{\\min}} w + 2 \\cdot w_{\\max}\\)
跑分层图即可。

以上是关于分层图总结的主要内容,如果未能解决你的问题,请参考以下文章

网络流常见建图套路总结(重制版)

分层图最短路 乱搞分享

分层图求最短路

存储系列之 总结:存储分层

图分层布局算法

日总结——20180410