Buggy python submission (verdict: Runtime Error):
import math
num_vertax,num_coler=map(int,input().split())
ver_array=[0]*num_vertax
for i in range(num_vertax-1):
    a,b=map(int,input().split())
    ver_array[a-1]+=1
    ver_array[b-1]+=1
ans=num_coler
factorial=math.factorial(num_coler-1)
def permutation_modp(n,k):
    global factorial
    ans=factorial//n
    ans//=math.factorial(k)
    return ans
ans*=permutation_modp(1,num_coler-ver_array.pop(0)-1)
for ver in ver_array:
    ans*=permutation_modp(num_coler-1,num_coler-ver-1)
print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)

Buggy python submission (verdict: Time Limit Exceeded):
def permutation_modp(n,k):
    ans=1
    for i in range(k):
        ans*=(n-i)
    return ans
num_vertax,num_coler=map(int,input().split())
ver_array=[0]*num_vertax
for i in range(num_vertax-1):
    a,b=map(int,input().split())
    ver_array[a-1]+=1
    ver_array[b-1]+=1
ans=num_coler
ans*=permutation_modp(num_coler-1,ver_array.pop(0))
for ver in ver_array:
    ans*=permutation_modp(num_coler-2,ver-1)
print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)

Buggy python submission (verdict: Time Limit Exceeded):
def permutation_modp(n,k):
    ans=1
    for i in range(k):
        ans*=(n-i)
    return ans%1000000007
num_vertax,num_coler=map(int,input().split())
ver_array=[0]*num_vertax
for i in range(num_vertax-1):
    a,b=map(int,input().split())
    ver_array[a-1]+=1
    ver_array[b-1]+=1
ans=num_coler
ans*=permutation_modp(num_coler-1,ver_array.pop(0))
for ver in ver_array:
    ans*=permutation_modp(num_coler-2,ver-1)
print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)

Buggy python submission (verdict: Time Limit Exceeded):
def permutation_modp(n,k):
    ans=1
    for i in range(k):
        ans*=(n-i)
    return ans%1000000007
num_vertax,num_coler=map(int,input().split())
ver_array=[0]*num_vertax
for i in range(num_vertax-1):
    a,b=map(int,input().split())
    ver_array[a-1]+=1
    ver_array[b-1]+=1
ans=num_coler
top=1
for ver in ver_array:
    ans=(ans%1000000007)*permutation_modp(num_coler-2+top,ver+top-1)
    top=0
print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)

Buggy python submission (verdict: Time Limit Exceeded):
def permutation_modp(n,k):
    ans=1
    for i in range(k):
        ans*=(n-i)
    return ans%1000000007
num_vertax,num_coler=map(int,input().split())
ver_array=[0 for i in range(num_vertax)]
for i in range(num_vertax-1):
    a,b=map(int,input().split())
    ver_array[a-1]+=1
    ver_array[b-1]+=1
ans=num_coler
top=1
for ver in ver_array:
    ans=(ans%1000000007)*permutation_modp(num_coler-2+top,ver+top-1)
    top=0
print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)

Buggy python submission (verdict: Time Limit Exceeded):
def permutation(n,k):
    ans=1
    for i in range(k):
        ans*=(n-i)%1000000007
    return ans%1000000007
num_vertax,num_coler=map(int,input().split())
ver_array=[0 for i in range(num_vertax)]
for i in range(num_vertax-1):
    a,b=map(int,input().split())
    ver_array[a-1]+=1
    ver_array[b-1]+=1
ans=num_coler
top=1
for ver in ver_array:
    ans*=permutation(num_coler-2+top,ver+top-1)
    top=0
print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)

Buggy python submission (verdict: Runtime Error):
def permutation(n,k,mod):
    ans=1
    for i in range(k):
        ans*=(n-i)%mod
        ans%=ans
    return ans
num_vertax,num_coler=map(int,input().split())
ver_array=[[i+1,[]] for i in range(num_vertax)]
for i in range(num_vertax-1):
    a,b=map(int,input().split())
    ver_array[a-1][1].append(ver_array[b-1][0])
    ver_array[b-1][1].append(ver_array[a-1][0])
ans=num_coler
top=1
for ver in ver_array:
    ans*=permutation(num_coler-2+top,len(ver[1])+top-1,1000000007)%1000000007
    top=0
print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)

Buggy python submission (verdict: Runtime Error):
import math

def permutation(n,k):
    return math.factorial(n)//math.factorial(n-k)

if __name__=="__main__":
    num_vertax,num_coler=map(int,input().split())
    ver_array=[[i+1,[]] for i in range(num_vertax)]
    for i in range(num_vertax-1):
        a,b=map(int,input().split())
        ver_array[a-1][1].append(ver_array[b-1][0])
        ver_array[b-1][1].append(ver_array[a-1][0])
    ans=num_coler
    top=1
    for ver in ver_array:
        ans*=permutation(num_coler-top,len(ver[1])+1-top)
        top=2
    print(ans%1000000007)

Fixed submission:
N,K=map(int,input().split())
mod=1000000007
path=[[] for i in range(N)]
for i in range(N-1):
  a,b=map(int,input().split())
  a=a-1
  b=b-1
  path[a].append(b)
  path[b].append(a)
#print(path)
  
abc=[False for i in range(N)] #0ならまだ塗ってない
 
abc[0]=True
cnt=0
ans=K%mod
nx=[]
for i in range(len(path[0])):
  child=path[0][i]
  if abc[child]:
    continue
  ans=ans*(K-1-cnt)
  ans=ans%mod
  cnt=cnt+1
  abc[child]=True
  nx.append(child)
while len(nx)>0:
  a=nx.pop()
  cnt=0
  for i in range(len(path[a])):
    child=path[a][i]
    if abc[child]:
      continue
    ans=ans*(K-2-cnt)
    ans=ans%mod
    cnt=cnt+1
    abc[child]=True
    nx.append(child)
      
print(ans%mod)