#4849. 图

探讨了在给定的无向联通图中,如何通过删除两条树边和若干非树边使图不连通的问题。提出了在特定条件下,如何找到最少需要删除的非树边数量的方法。利用dsu on tree算法,实现O(nlog^2n)的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

给定一张 n n n 个点 m m m 条边的无向联通图和其中一棵生成树,要求删掉正好两条树边和一些非树边,使得图不连通。求最少删掉几条非树边。

保证以 1 1 1 号点为生成树的根时,非树边的两端的最近公共祖先是 1 1 1 号点。

数据范围

3 ≤ n ≤ 40000 ; m ≤ 100000 ; m ≥ n − 1 3 \le n \le 40000; m \le 100000; m \ge n − 1 3n40000;m100000;mn1

题解

考虑删掉两条边后删掉非树边,那就考虑孤立三块中的一块。

1.删掉不在以 1 1 1 为根的同一子树内的边:那就要么把 u u u v v v 子树连出去的非树边删掉,要么删掉两个子树外到这两个子树内的边。
2.如果删掉同一子树的边:可以发现 u , v u,v u,v 构成祖先关系更优。那就是要么是孤立 v v v 子树,要么孤立 u u u 子树扣掉 v v v 子树的部分,要么就是孤立 u u u 子树外的连通块。

dsu on tree \text{dsu on tree} dsu on tree 维护即可。效率: O ( n l o g 2 n ) O(nlog^2n) O(nlog2n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值