今天晚上很生气,CF 爆炸了,AT 没活了,DS 不想写了,于是来写博客。


广义串并联图本身并不重要,重要的是一种方法,通过这种方法,我们可以在一些题中有效合并边上的信息。

这种方法可以简单地归纳为:删一缩二叠重边。

具体的,我们对于度数为 1 的点,在更新完答案后直接删除,对于度数为 2 的点,更新完答案后删除,但是将两个与其相连的点连边。这时可能会出现新连的边与原边重叠的情况,我们要单独讨论并把这两条边叠起来。

显然,这些东西可以用拓扑排序加 map 解决。

现在我们对广义串并联图下定义,这种图就是按上面的方法合并完后会变成一个点。既然合并后只剩一个点了,我们也就不需要做其他操作了。所以这种方法在广义串并联图中用的最多。

这一方面的例题:生成树

思路打开,并不是在广义串并联图中才能用这个方法。用完这个方法后,剩下的每个点肯定度数都大于 2 。这意味着什么呢?

我们令 \(n\) 为点数,\(m\) 为边数,\(k=m-n\),那么通过这三种操作(一,二操作中 \(n\)\(m\) 减一,三操作 \(m-1\))\(k\) 的值是不增的。

因此我们可以得出最终点数 \(n'\)\(m'\) 的关系:\(2m'>=3n'\)\(m'<=n'+k\)(此处 \(k\) 为初始的 \(m-n\))。所以 \(n'\le2k,m'\le3k\)。如果 \(k\) 很小的话就可以进行一些神奇的操作。

我能想到的应用就两种:

  1. 在路径信息本身就跟答案有关时
  2. 在路径可以进行压缩时。

前者的应用就是生成树那道题,后者的例题可以是这个:JOI Open 2022 放学路

据说这种方法和 Top Tree 有联系,但我还没学。。。所以先咕着。