给定一张带权有向无环图和起点、终点和数 t0t0t0,设从起点到终点不经过重复的边的不同的路径数量为 ccc,每条路径的权值总和为 www,求 ∑w+(c−1)×t0\sum \limits w + (c - 1) \times t0∑w+(c−1)×t0 对 100001000010000 取余的结果。可能有重边。
给定的是 DAG,所以可以考虑 DP。
设 cnticnt_icnti 表示起点到 iii 的路径数量,disidis_idisi 表示起点到 iii 的全部路径和。那么有状态转移方程:cnti=∑(u,i)∈Ecntucnt_i = \sum \limits_{(u,i) \in E} cnt_ucnti=(u,i)∈E∑cntu,即所有入边的点的 cntcntcnt 之和。disi=∑(u,i)∈Edisu+cntu⋅wdis_i = \sum \limits_{(u, i) \in E} dis_u + cnt_u \cdot wdisi=(u,i)∈E∑disu+cntu⋅w,www 为该边边权。
但是直接树上 DFS 答案是错的,应该有些点的状态还没有更新完就用这个状态更新其他节点了。所以考虑按照类似拓扑排序的思想,只有一个点入度为 000 时才用它更新其他点,复杂度 O(n+m)O(n+m)O(n+m)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现