【做题记录】HNOI2015 落忆枫音
- 落忆枫音
题目:
给一个 个点 条边的 DAG,点 的入度为 。随后向图中再加入一条有向边,加边后图可能不再是 DAG。
求出图中有多少个 条有向边的集合,满足只使用集合中的边能从
到达其它所有点(即有向生成树),模
题解:
新加入的边是特殊的,因为如果加入了那么原图就有可能不是 DAG。
加入了新边的影响就是原来的图不再是一个 DAG,而有可能会出现环。
不妨容斥一下。
在 DAG 上做有向生成树很简单。如此题,此时的答案为:
其中 表示 号节点的入边。
这个结论显然,答案就是所有节点(除了 号)的入边数量之积。(就是给每个节点选一个父亲)
接下来考虑环。
设加入的边为 ,那么新出现的环只可能是从 。(因为原来的图没有环,所以只可能是新增的边形成了环)
此时我们可以用一个 dfs
来对其进行一个朴素的搜索。
考虑对于搜到每个点的情况,不妨设 表示到了 点时有多少种无用情况(即环),那么答案显然就是
考虑这个 dp
,易知
所以转移显然:
那么在 DAG 上套就可。
本文作者:trsins
本文链接:https://www.cnblogs.com/trsins/p/15776626.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
标签:
做题记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步