結果
問題 | No.517 壊れたアクセサリー |
ユーザー |
|
提出日時 | 2021-08-09 18:31:15 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 43 ms / 2,000 ms |
コード長 | 1,774 bytes |
コンパイル時間 | 171 ms |
コンパイル使用メモリ | 81,888 KB |
実行使用メモリ | 55,512 KB |
最終ジャッジ日時 | 2024-09-21 17:30:22 |
合計ジャッジ時間 | 1,640 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 15 |
ソースコード
import sysinput = lambda : sys.stdin.readline().rstrip()sys.setrecursionlimit(2*10**5+10)write = lambda x: sys.stdout.write(x+"\n")debug = lambda x: sys.stderr.write(x+"\n")writef = lambda x: print("{:.12f}".format(x))n = int(input())a = [input() for _ in range(n)]m = int(input())b = [input() for _ in range(m)]ns = [[] for _ in range(26)]rns = [[] for _ in range(26)]ds = [0]*26seen = [0]*26for s in a+b:for i in range(len(s)):ci = ord(s[i]) - ord("A")seen[ci] = 1for j in range(i):cj = ord(s[j]) - ord("A")ns[cj].append(ci)rns[ci].append(cj)ds[cj] += 1seen[ci] = seen[cj] = 1def cycle(rns, ds):"""出次数0の頂点を削除しつづけるDAGならTPS順序も求まるrns: 逆辺の隣接リストds: もとのグラフにおける出次数返り値vs: 除かれた頂点done: 除いたフラグ"""from collections import dequeq = deque()n = len(rns)done = [False] * nok = 1for u in range(n):if ds[u]==0:if not seen[u]:done[u] = Truecontinueq.append(u)done[u] = Truevs = []while q:# print([chr(ord("A")+v) for v in q])if len(q)>=2:ok = 0u = q.popleft()vs.append(u)for v in rns[u]:if done[v]:continueds[v] -= 1if ds[v]==0:done[v] = Trueq.append(v)return vs,done,okvs,done,ok = cycle(rns,ds)if all(done):if ok:ans = "".join(map(chr, ((ord("A")+v) for v in vs)))[::-1]else:ans = -1else:ans = -1print(ans)