[省选联考 2021]图函数

图函数

题解

挺水的。

很容易发现,当且仅当 u u u能够不经过 ( 0 , v ) (0,v) (0,v)的点到达 v v v,才会对答案产生贡献。
所以我们就有了一个很简单的44pts暴力,对于每个图的每个点去找它可以到达那些点。

由于它的图是一条边一条边的删过去,我们很容易想到将它离线下来转化成一条边一条边地加上去。
我们可以针对每个点 u u u,将边一条一条地加入图中。记录在加入第几条边时 u u u可以到达 v v v,那么点对 ( u , v ) (u,v) (u,v)对这条边为被删除的图中都会产生贡献。
由于它要使得 u − > v u->v u>v的路径上没有经过编号在 ( 0 , v ) (0,v) (0,v)中的点,所以我们对于点 u u u就只加入两端都 ⩾ u \geqslant u u的边,也只讨论 u u u关于 v ⩾ u v\geqslant u vu的点的连通情况。
由于它要求这两个点之间能够互相到达,我们需要维护一个正图和一个反图,答案就是这两个图之间的 max ⁡ \max max
时间复杂度是 O ( n m ) O\left(nm\right) O(nm),看起来能过,但交上去只有80ts,得想办法优化卡常一下。

我们先分析一下哪些地方造成了大量时间的浪费,因为按理说, n m nm nm 2 × 1

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值