解説
まずサンプル 1 を図示してみます。
正解となる通り方をするとこうなります。
このように、辺を何度も通ることでスコアを稼ぐことができます。
T,N が T,N≤100 と小さいので、時刻が 0,1,2,…,T のとき、それぞれの頂点における最大スコアを求めることを考えてみましょう。
dp[i][j] を、時間 i のときに地点 i にいる場合の最大のスコアと定義します。
更新は以下のように行います。
dp[i][Bk]=max{dp[i][Bk],dp[i−1][Ak]+Sk}
dp[i][j]=max{dp[i][j],dp[i−1][j]}
このようにすることで、 O((N+M)T) で解くことができました。