(学军集训)平⾯图

题意

给你⼀个连通的平⾯图(平⾯图是可以画在平⾯上并且使得不同的边可以互不交叠的图)。接下来有 q q q次操作:
操作"-",删去边 ,询问删完后有⼏个连通块。
操作"?",询问 在不在⼀个连通块中,如果是,输出1,否则输出0。
数据范围: n ≤ 100000 , m , q ≤ 200000 n\le 100000,m,q\le 200000 n100000,m,q200000

题解

对于判断平面图的联通性,考虑转化成对偶图,发现平面图新增加连通块,当且仅当删去的边在对偶图中形成环,于是构出对偶图后用并查集维护,即可解决“-”操作。
建对偶图的过程:把每条无向边看作两条有向边,每次新增一个区域时,任意选一条边u->v开始,找到v出发的在这条边顺时针方向的第一条边,以此类推,直到再次找到u->v这条边,经过的所有边即为属于这个区域,每条无向边的两条有向边所属的区域即为这条无向边连接的区域。
对于“?”操作,在每次新增连通块时,不可避免地要重新将一个新分裂出的联通块的所有点标号。于是考虑启发式分裂:因为遍历一个连通块的效率是它的边数,故对于新分裂的两个连通块,要用边数较小的那个的效率实现。每次在两个连通块中都多遍历一条边,直到有一个连通块被遍历完即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值