結果
問題 | No.1078 I love Matrix Construction |
ユーザー |
![]() |
提出日時 | 2020-06-13 19:37:51 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,047 ms / 2,000 ms |
コード長 | 2,432 bytes |
コンパイル時間 | 187 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 234,032 KB |
最終ジャッジ日時 | 2024-06-25 19:21:06 |
合計ジャッジ時間 | 12,997 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 22 |
ソースコード
from collections import dequeN = int(input())S = [int(s)-1 for s in input().split()]T = [int(t)-1 for t in input().split()]U = [int(u) for u in input().split()]M = N**2*2E = [[] for _ in range(M)]E2 = [[] for _ in range(M)]used = [0]*Mfor i in range(N):for j in range(N):l0 = (S[i]*N+j)*2l1 = l0+1r0 = (j*N+T[i])*2r1 = r0+1if U[i] == 0:E[l0].append(r1)E[r0].append(l1)E2[l1].append(r0)E2[r1].append(l0)elif U[i] == 1:E[l1].append(r1)E[r0].append(l0)E2[l0].append(r0)E2[r1].append(l1)elif U[i] == 2:E2[l1].append(r1)E2[r0].append(l0)E[l0].append(r0)E[r1].append(l1)else:E2[l0].append(r1)E2[r0].append(l1)E[l1].append(r0)E[r1].append(l0)L = []for i in range(N):for j in range(N):for k in range(2):n = (i*N+j)*2+kif used[n] == 1:continueq = deque()q.append(n)used[n] = 1h = deque()h.append(0)while q:temp = q[-1]if h[-1] == len(E[temp]):q.pop()h.pop()L.append(temp)else:j2 = E[temp][h[-1]]h[-1] += 1if used[j2] == 0:used[j2] = 1q.append(j2)h.append(0)A = [[-1]*N for _ in range(N)]L2 = []L.reverse()q = deque()for l in L:if used[l] == 2:continueele = []used[l] = 2q.append(l)while q:temp = q.pop()ele.append(temp)for e in E2[temp]:if used[e] == 2:continueused[e] = 2q.append(e)L2.append(ele)L2.reverse()used = [-1]*Mfor i in range(len(L2)):for l in L2[i]:used[l] = ifor i in range(N):for j in range(N):n = (i*N+j)*2if used[n] > used[n+1]:A[i][j] = 1elif used[n] == used[n+1]:A = -1breakelse:A[i][j] = 0if A == -1:breakif A == -1:print(A)else:for i in range(N):print(*A[i])