P4366 [Code+#4]最短路

P4366 [Code+#4]最短路

一个图有两层:

  • 一层完全图,每对 \(u\)\(v\) 间都有一条边权为 \(u \oplus v\) 的边。
  • 一层给定图,边信息完全给定。这层图的边数 \(m \le 5 \times 10^5\)

求单源最短路。\(n \le 10^5\)


暴力建边 \(n^2\) 不可取,所以优化建图。

第一层是完全图,第二层是直接给定边的图。对第一层优化,然后再加第二层。

想到把 \((u, v, u \oplus v)\) 拆成 \(u \rightsquigarrow v\) 路径的形式,使得路径权值和 \(w\) 满足 \(w \le u \oplus v\)

可以猜想上面这个其实就是 \(w = u \oplus v\)

然后发现可以把 \(u \oplus v\) 二进制拆位,于是可以只保留从每个点开始,边权为 \(2^k\) 的边。

端点范围细节:https://www.luogu.com.cn/discuss/585050

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值