ARC173D-Bracket Walk

题意

给定一个\(n\)个点\(m\)条边的有向强联通图,每条边为'('或')',问是否存在一条回路,使得每条边至少经过一次,且路径的边按顺序拼接后形成的字符串为合法括号序列
输出'Yes' or 'No'
\(n\le 4000\)\(m\le 8000\)

做法

边'('、')'分别替换成权值\(+1,-1\)

观察1:题意可以转化成:找出一条回路,每条边至少经过一次,路径边权和为\(0\)

证明略

观察2:若此图同时存在正环和负环,则一定有解

此图为强联通图,证明显然

观察3:若此图仅有负环或仅有正环,则一定无解

证明略

那么题目转化为判断是否存在正环或负环,可以用\(\text{Bellman-Ford}\)算法在\(O(nm)\)内解决。

posted @ 2024-03-11 22:02  Grice  阅读(34)  评论(1编辑  收藏  举报