Link
一道及其智障的题目,关键在于博主调这个智障题调了基本一天…
其实不是很难想,我们先缩一下点,把新图建出来,当然是因为要保证图无环,要不然下面就没法做了。
这里实际上要建两个新图,一个正着的,还有一个反图。
干什么用的呢?主要就是因为题目要求回到原点,这个玩意怎么实现的问题。
首先这个路经肯定是一个圈,然后我们就可以找一下这个圈的一个“转折节点”,实际上就是枚举一个中间节点$X$,然后吧路经分为$1 -> X$和$X -> 1$两个链,这就需要我们建一个反图来进行实现。
因为题目要求经过的点最多,因此我们就跑两个最长路。
第一个最长路记录正图的$1 - > Point_i$节点为$D[i]$。
第二个最长路记录反图的$Point_i - > 1$节点为$D2[i]$。(实际上也是从1节点出发)
然后对于这个逆行的边我们如下处理:
首先在$Tarjan$的时候进行一个记录$C[i]$表示$SCCi$号节点里面包含的原图的点数。
那么$C[B[i]]$就是表示原图$i$号节点所属的$SCC$节点包含的原图的点数。
对于逆行的边我们直接枚举
答案就是$min(Ans, D[V[j].F] + D2[V[j].T] + C[B[1]])$(V为反图)
1 |
|