Loading

【题解】CF639F Bear and Chemistry

注意到可以直接 dfs 求出原图的一个生成树。除了树边以外,剩下的边看成区间加,给每个树边定义一个"覆盖次数",如果 \(x,y\) 在树上的路径之间有覆盖次数为 \(0\) 的树边,那么 \((x,y)\) 就是非法的。

每次查询的时候树剖暴力区间加和撤销,点拿出来建虚树然后 dp 即可。

我好像看成点对计数了,不过这个问题显然是比原问题要强的。但是好像没看到有人写我这个做法?正确性不太清楚。


判断条件就是说是不是所有点都在一个边双里。

先将原图边双缩点为森林,然后将每次询问相关的点拿出来建虚树(即提取出所有可能有用的点,和 NOI 2021 庆典 一个道理),再在这些关键点之间求边双即可。

关于第二个做法我是觉得比我第一个做法要简单些,并且由于图不一定是连通图,求生成树,树边覆盖什么的还需要建虚点处理之类的,总之比较麻烦。

posted @ 2021-09-05 19:07  Qiuly  阅读(42)  评论(0编辑  收藏  举报