見出し画像

ほぼ日刊競プロ ABC182 C - Travel

C - Travel

問題文
N 個の都市があります。都市 i から都市 j へ移動するには T
i,jの時間がかかります。

都市 1 を出発し、全ての都市をちょうど 1 度ずつ訪問してから都市 1 に戻るような経路のうち、移動時間の合計がちょうど K になるようなものはいくつありますか?

考えたこと

itertoolsを用いて準列を用いる.

N,K = map(int,input().split())
Tlist = []
for i in range(N):
   T = list(map(int,input().split()))
   Tlist.append(T)
#print(Tlist)
ans = 0
root = tuple()
for v in itertools.permutations(range(1,N),N-1):
   root=(0,)+v+(0,)
   temp = 0
   for i in range(N):
       #print (Tlist[root[i]][root[i+1]])
       temp+=Tlist[root[i]][root[i+1]]
   if temp==K:
       ans+=1
print (ans)

この記事が気に入ったらサポートをしてみませんか?