图论做题笔记

POI2014 Rally(拓扑排序)

Description

给定一个N个点M条边的有向无环图,每条边长度都是1。

请找到一个点,使得删掉这个点后剩余的图中的最长路径最短。

\(n,m\le 5\times 10^5\)

Solution

  • \(S_i\)表示从i结束的最长路,\(T_i\)表示由i出发的最长路
  • 这两个数组的预处理可以通过拓扑排序在\(O(n)\)的时间复杂度下解决
  • 然后根据拓扑序从小到大扫描一遍,每次删除和i入边有关的最长路,回答询问后,加入与i出边有关的最长路。
  • 可以证明这种添加方式不会重复添加。
  • 然后再利用线段树或者堆维护一下就可以了

猜你喜欢

转载自www.cnblogs.com/Zerokei/p/9715603.html