1 条题解
-
0
自动搬运
来自洛谷,原作者为

yxzy4615
**搬运于
2025-08-24 22:22:47,当前版本为作者最后更新于2021-10-14 08:48:40,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目描述
给定个点,条边的有向无环图。不保证图联通。 次询问,每次给出和个互不相同的数 ,求出如果去掉这个点,整个有向无环图将剩余多少条链。答案对取模。每次询问独立。
-
“链”的定义是:我们设一条长度为的链的路径为 ,则应满足入度为,出度为。你可以将其理解为一条食物链。
-
两条链是“不同的”,当且仅当它们的长度不同,或者经过的点集不同。
-
需要特别注意的是,删去某些点后新产生的链不计入答案。 例如一图中,有条链。如果去掉号点,则剩余条链。
数据范围
- Subtask 1(1 point):给定的图是一条链。
- Subtask 2(14 points):。
- Subtask 3(20 points):。
- Subtask 4(17 points):。
- Subtask 5(18 points):。
- Subtask 6(30 points):无特殊限制。
对于的数据:,$1\leq m\leq \min(\frac{n\times(n-1)}{2},2\times 10^4)$,
所有询问满足:,,。保证 互不相同。
题目分析
很明显,如果 就只有一条链,否则就没有。
标记删掉的点,暴力去跑图。
设表示以结尾的链数,转移显然:
时间复杂度。
的情况下,考虑删去的点会对答案产生多少贡献。
拿样例作分析:

入度为的点是,出度为的点是。手玩找出。
$ \begin{matrix} i & 1 & 2 & 3 & 4 & 5 & 6 & 7\\ f_i & 1 & 2 & 1 & 6 & 13 & 4 & 1 \end{matrix} $
再找出每个点到出度为的点的方案数。
$ \begin{matrix} i & 1 & 2 & 3 & 4 & 5 & 6 & 7\\ n\!f_i & 3 & 3 & 13 & 1 & 1 & 2 & 4 \end{matrix} $
手玩答案后汇总得:
$ \begin{matrix} i & 1 & 2 & 3 & 4 & 5 & 6 & 7\\ f_i & 1 & 2 & 1 & 6 & 13 & 4 & 1\\ n\!f_i & 3 & 3 & 13 & 1 & 1 & 2 & 4\\ ans_i & 10 & 7 & 0 & 7 & 0 & 5 & 9 \end{matrix} $
设为出度为的的和,发现。
预处理,查询,总复杂度。
对于,直接用 计算可能会出问题,因为同时经过的链会被重复计算,考虑两点容斥。
设表示在原图上的方案数,还是通过样例:
$ \begin{matrix} d_{i,j} & 1 & 2 & 3 & 4 & 5 & 6 & 7 & i\\ 1 & 1 & 0 & 0 & 2 & 3 & 1 & 0 & \\ 2 & 0 & 1 & 0 & 1 & 3 & 1 & 0 & \\ 3 & 1 & 2 & 1 & 6 & 13 & 4 & 1 & \\ 4 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & \\ 5 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & \\ 6 & 0 & 0 & 0 & 1 & 2 & 1 & 0 & \\ 7 & 0 & 1 & 0 & 2 & 4 & 1 & 1 & \\ j & \end{matrix} $
可以发现一个性质:若 ,则 。
显然成立。- 如果 ,代表 到出度为的点的路径不相交,直接用 计算即可。
- 如果 ,代表 到出度为的点的路径中 包含 ,重复路径就是 ,用 $ans=s-f_i\times n\!f_i - (f_j - f_i \times d_{i,j})\times n\!f_j$ 计算即可。
- 如果 。用 $ans=s-f_i\times (n\!f_i - f_j \times d_{j,i})- f_j\times n\!f_j$ 计算即可,同上。
所以,总计算式为:
$$ans=s-(f_i-f_j\times d_{j,i})\times n\!f_i - (f_j - f_i \times d_{i,j})\times n\!f_j $$预处理,查询,总复杂度。
到此,思路已经全部出来了,将的情况扩展。对所有删去的点的每个点对 ,如果能到达,就往连一条的边,然后再拓扑排序一遍:对于每个点的出边 将 。最后统计答案,即
这个可以通过预处理拓扑序避免每次询问再跑一遍拓扑,即根据拓扑序排序后进行容斥。
预处理,查询,总复杂度。
参考代码
-
- 1
信息
- ID
- 5281
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者