括号路径

引理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[当前颜色]赋值为当前点的出边。
否则要合并一下。
考场上这种简单题都没做出来,点分还没调出来,丢人。

原文地址:https://www.cnblogs.com/ctmlpfs/p/14493433.html