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\) 的边。