💧
ABC222-E: Red and Blue Tree 解説
問題
頂点の木グラフ, 数列 N , 整数 A_1, ..., A_M が与えられます K
それぞれの辺を赤か青かに塗ることを考える時,次の条件を満たす組合せの総数をmod 998244353で答えてください
駒をと最短経路で動かした時に 赤の辺を通った回数 - 青の辺を通った回数 がKと等しい A_1, A_2,..., A_M
解説
- 次のステップに分解する
- 頂点
から頂点A_1 の最短経路,頂点A_2 から頂点A_2 の最短経路,...,頂点A_3 から頂点A_{M-1} の最短経路を求めるA_M - dijkstra法 + 経路復元で十分間に合う
https://algo-logic.info/dijkstra/#toc_id_2
- dijkstra法 + 経路復元で十分間に合う
- それぞれの最短経路の情報を元に,どの辺を何回通るかカウントする
-
:dp[i][j] 番目までの辺を塗った時に 赤の辺を通った回数 - 青の辺を通った回数がi となる組合せの総数j - jが負の値をとるので
を使うと便利vector<map<int, modint>>
- jが負の値をとるので
-
を出力dp[n][k]
コード
Discussion