dp[v] 表示从站点 S 出发,恰好走过 i 条线路后到达站点 v 的路径数。初始化时 dp[S] = 1,其他站点的值为 0。next[v] += dp[u]。每一层都使用新数组,确保转移只增加一条线路。时间复杂度为 O(L(N+M)),逐层遍历所有线路并初始化站点计数。空间复杂度为 O(N+M),用于保存线路与相邻两层的状态。
一家物流企业共有 N 座中转站,各站依次标记为 1 至 N。站点间铺设了若干运输线路,每条线路都只支持指定方向的运输。
现已获得该网络的全部线路资料,需要回答一次运输路径计数问题。
请统计从中转站 S 启程、沿线路移动恰好 L 次后停在中转站 T 的路径总数。同一站点可以在途中反复到访,已经走过的线路也能够再次使用。只要经过的站点序列有一处不同,就视为两条不同路径。
输出一个整数,表示符合要求的路径总数;若没有可行路径,则输出 0。答案无需取模。
输入:
5 7
2 5 4
2 3
3 2
3 4
4 3
3 5
2 5
5 1
输出
2
解释:
从站点 2 启程,使用 4 条线路后停在站点 5,有以下两种走法:
两种走法都再次到访了站点 3。
输入:
6 6
2 6 2
2 1
1 6
2 4
4 6
2 5
5 6
输出:
3
解释:
由站点 2 出发,使用 2 条线路到站点 6,可选择 2→1→6、2→4→6 或 2→5→6。
输入:
5 4
4 1 1
4 2
2 1
1 5
5 3
输出:
0
解释:
站点 4 没有直接驶向站点 1 的线路,因此只使用 1 条线路无法抵达目的站。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册