結果

問題 No.3158 Collect Stamps
コンテスト
ユーザー kmmtkm
提出日時 2025-05-18 12:35:48
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 391 ms / 2,000 ms
コード長 707 bytes
コンパイル時間 415 ms
コンパイル使用メモリ 82,388 KB
実行使用メモリ 144,076 KB
最終ジャッジ日時 2025-05-18 12:35:54
合計ジャッジ時間 5,890 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 35
権限があれば一括ダウンロードができます

ソースコード

diff #

N, M, K = map(int, input().split())
A = set(map(lambda x: int(x) - 1, input().split()))
T = [list(map(int, input().split())) for _ in range(N)]

ans = 10 ** 18

# dfs で順列全探索
def generate_permutations(n, m):
	permutations = []
	used = [False] * n

	def dfs(determined, used):
		if len(determined) == m:
			permutations.append(determined[:])
		else:
			for x in range(n):
				if used[x]:
					continue
				used[x] = True
				determined.append(x)
				dfs(determined, used)
				determined.pop()
				used[x] = False	
  
	dfs([], used)
  
	return permutations


for p in generate_permutations(N, M):
	if p[-1] not in A:
		continue
	ans = min(ans, sum(T[p[i]][p[i+1]] for i in range(M-1)))

print(ans)
0