题目描述
给定正整数
- 图中仅包含
( )的边; - 满足以下条件的点
恰好有 个: - 存在
和 的路径。
- 存在
只需要输出答案对
输入格式
输出格式
输出一行
输入输出样例 #1
输入 #1
1 |
|
输出 #1
1 |
|
输入输出样例 #2
输入 #2
1 |
|
输出 #2
1 |
|
输入输出样例 #3
输入 #3
1 |
|
输出 #3
1 |
|
说明/提示
样例解释
样例
; ; 。
; ; 。
; 。
数据范围
; ; 是素数。
子任务
子任务
子任务编号 | 得分 | |
---|---|---|
题解
先考虑
- 所有点都能到
,当且仅当 到 每个点出度不为 0; 能到达所有点,当且仅当 到 每个点入度不为 0。
那么直接施加容斥。用
在
对于
将点划分为 3 类:
- 1 类点,表示在
到 的路径上(即在我们钦定的 个点之中); - 2 类点,表示能从
到达的、但不是 1 类点的点; - 3 类点,表示不能从
到达的点。
记
对于每个点
- 1 类点:找到编号比它小的 3 类点
连边 ; - 2 类点:找到编号比它小的 1、2、3 类点
连边 ,有至少一个这样的 1 或 2 类点 连边; - 3 类点:找到编号比它小的 3 类点
连边 ;
发现什么?3 类点可以往其后面所有点连边。所以假设所有的 3 类点在
因此我们可以 DP 求出所有的贡献之和,然后将 3 类点删掉,只考虑 1、2 类点之间的贡献。这也可以
整体时间复杂度为