平面图转对偶图.
先把平面图转成对偶图.
方法是把每条无向边拆成两条有向边,规定每个面都在围成它的有向边的左侧,这样每条有向边就只会被用一次.
对于每个边,按照极角序找它转动后下一条边,这样会形成一个置换.
分解后得到的每个环就对应了每个面,即对偶图中的每个点,再在有公共边的面之间连边即可.
找出面的时候用叉积顺便算一下面积,面积为负数的就是外面无穷大的面.
然后以最外面无穷大的面为根,做一棵生成树出来,询问时按照最外围边对子树和容斥一下即可.
1 | //%std |
夢はここに 思い出は遠くに
平面图转对偶图.
先把平面图转成对偶图.
方法是把每条无向边拆成两条有向边,规定每个面都在围成它的有向边的左侧,这样每条有向边就只会被用一次.
对于每个边,按照极角序找它转动后下一条边,这样会形成一个置换.
分解后得到的每个环就对应了每个面,即对偶图中的每个点,再在有公共边的面之间连边即可.
找出面的时候用叉积顺便算一下面积,面积为负数的就是外面无穷大的面.
然后以最外面无穷大的面为根,做一棵生成树出来,询问时按照最外围边对子树和容斥一下即可.
1 | //%std |