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)\)内解决。