結果
| 問題 |
No.517 壊れたアクセサリー
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
ソースコード
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()