括号路径

引理1:如果\((x,y)\)合法,则\((y,x)\)合法
发现倒着用栈扫一遍还是能够成功匹配
引理2:如果\((x,y)\)合法,\((y,z)\)合法,则\((x,z)\)合法
用栈匹配\((x,y)\)栈会弹空,由于栈是空的,所以匹配\((x,z)\)也会成功。
构造一新图\(G'\),如果存在\((x,y)\)合法,则\(G'(x,y)\)之间连有向边。
引理3:\(G'\)是无向图,而且其每个连通块是一个团。
考虑用启发式合并维护。
维护\(n\)个map和一个并查集,map的下标为\(x\)的元素表示任意一个出边值为\(x\)的元素。
在插入边时,如果map[当前颜色]为空,则把map[当前颜色]赋值为当前点的出边。
否则要合并一下。

posted @ 2021-03-07 08:30  celerity1  阅读(62)  评论(0编辑  收藏  举报