結果

問題 No.517 壊れたアクセサリー
ユーザー nanae
提出日時 2017-05-28 22:11:37
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 30 ms / 2,000 ms
コード長 1,175 bytes
コンパイル時間 288 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 10,880 KB
最終ジャッジ日時 2024-09-21 15:29:46
合計ジャッジ時間 1,616 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 15
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import sys
from itertools import accumulate
from collections import Counter
def solve():
n = int(input())
cnt = 0
words = []
for i in range(n):
s = input()
cnt += len(s)
words.append(s)
if len(words) == 1:
print(words[0])
return
nxt = [-1]*cnt
cor = dict()
rev = dict()
num = 0
for word in words:
for i, ch in enumerate(word):
cor[ch] = num
rev[num] = ch
if i + 1 < len(word):
nxt[num] = (num + 1) % cnt
num += 1
m = int(input())
for i in range(m):
s = input()
for i, ch in enumerate(s[:-1]):
nxt[cor[ch]] = cor[s[i + 1]] % cnt
# print(nxt)
if nxt.count(-1) > 1:
print(-1)
else:
for i in range(cnt):
ans = dfs(nxt, rev, i, cnt, '')
if ans:
print(ans)
return
def dfs(nxt, rev, i, cnt, ans):
if i == -1:
if len(ans) == cnt:
return ans
else:
return False
return dfs(nxt, rev, nxt[i], cnt, ans + rev[i])
if __name__ == '__main__':
solve()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0