結果
| 問題 | 
                            No.196 典型DP (1)
                             | 
                    
| コンテスト | |
| ユーザー | 
                             yaoshimax
                         | 
                    
| 提出日時 | 2015-05-16 10:57:31 | 
| 言語 | PyPy2  (7.3.15)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 714 bytes | 
| コンパイル時間 | 1,614 ms | 
| コンパイル使用メモリ | 76,672 KB | 
| 実行使用メモリ | 816,584 KB | 
| 最終ジャッジ日時 | 2024-07-06 04:45:08 | 
| 合計ジャッジ時間 | 8,253 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | -- * 3 | 
| other | AC * 8 WA * 23 MLE * 1 -- * 9 | 
ソースコード
N,K=map(int,raw_input().split())
parent=[-1 for i in range(N)]
child=[[] for i in range(N)]
mod=1000000007
for i in range(N-1):
    a,b=map(int,raw_input().split())
    parent[b]=a
    child[a].append(b)
dp=[[0 for j in range(N+1)] for k in range(N)]
for i in range(N-1,-1,-1):
    if len(child[i])==0:
        dp[i][0]=1
        dp[i][1]=1
        continue
    l=[(0,1)]
    for c in child[i]:
        nl=[]
        for j in range(N+1):
            if dp[c][j]==0:
                break
            for key,val in l:
                nl.append((key+j,val*dp[c][j]%mod))
        l=nl
    s=0
    for key,val in l:
        dp[i][key]+=val
        dp[i][key]%=mod
        s=max(s,key)
    dp[i][s+1]=1
print dp[0][K]
            
            
            
        
            
yaoshimax