結果
| 問題 |
No.1111 コード進行
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 2020-07-10 22:00:05 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 835 bytes |
| コンパイル時間 | 289 ms |
| コンパイル使用メモリ | 12,544 KB |
| 実行使用メモリ | 122,240 KB |
| 最終ジャッジ日時 | 2024-10-11 09:11:32 |
| 合計ジャッジ時間 | 14,241 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 24 WA * 12 TLE * 2 -- * 10 |
ソースコード
"""
グラフ
メモ化再帰
各頂点で開始、複雑さXのものはいくつあるかをメモ化再帰で求める
N * 300 なので行ける
"""
import sys
sys.setrecursionlimit(27000000)
mod = 10**9+7
def dfs(v,k,n):
if k == 0 and n == 0:
return 1
elif k < 0 or n <= 0:
return 0
elif visit[v][k][n] != None:
return visit[v][k][n]
ret = 0
for nex,cost in lis[v]:
ret += dfs(nex , k-cost , n-1)
ret %= mod
visit[v][k][n] = ret
return ret
N,M,K = map(int,input().split())
lis = [ [] for i in range(300) ]
visit = [[[None] * N for j in range(K+1)] for i in range(300)]
for i in range(M):
P,Q,C = map(int,input().split())
P -= 1
Q -= 1
lis[P].append((Q,C))
ans = 0
for i in range(N):
ans += dfs(i,K,N-1)
ans %= mod
print (ans)
SPD_9X2