Description
题目链接:Luogu 5068
珂朵莉给你一个 $n$ 个点,$m$ 条边的无向无权图,一共有 $q$ 次询问,每次询问的时候给一堆二元组 $(x_i,y_i)$ 求图中有多少个点 $u$ 与这次询问中至少一个二元组 $(x_i,y_i)$ 满足 $\text{dist}(u,x_i)\le y_i$,$\text{dist}$ 表示这两个点在图中的距离。如果不连通 $\text{dist}=\infin$。
数据范围:$1\le n\le 10^3$,$1\le m,q\le 10^5$,记二元组的个数和为 $a$ 则 $1\le a\le 2.1\times 10^6$
Solution
我们对每个点 $i$ 和距离 $j$ 维护一个 $\text{bitset}\ f_{i,j}$ 表示和点 $i$ 距离不超过 $j$ 的点的集合。这个不超过可以用 $\text{bitset}$ 的前缀或得到。
询问时只需要把 $f_{x_i,y_i}$ 这些 $\text{bitset}$ 或起来,点集的大小就是答案。
时间复杂度:$O(nm+\frac{n^3+an}{\omega})$
Code
1 |
|