結果
| 問題 |
No.1078 I love Matrix Construction
|
| コンテスト | |
| ユーザー |
QCFium
|
| 提出日時 | 2020-05-02 18:02:15 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,350 bytes |
| コンパイル時間 | 228 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 177,092 KB |
| 最終ジャッジ日時 | 2024-12-30 19:06:06 |
| 合計ジャッジ時間 | 14,645 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 RE * 5 |
ソースコード
N = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
c = list(map(int, input().split()))
for i in range(N) :
a[i] -= 1
b[i] -= 1
def INDEX(i, j, k) : return (i * N + j) * 2 + k
hen = [[] for i in range(N * N * 2)]
rev = [[] for i in range(N * N * 2)]
for i in range(N) :
r0 = c[i] % 2
r1 = c[i] // 2
for j in range(N) :
hen[INDEX(a[i], j, r0)].append(INDEX(j, b[i], not r1));
rev[INDEX(j, b[i], not r1)].append(INDEX(a[i], j, r0));
hen[INDEX(j, b[i], r1)].append(INDEX(a[i], j, not r0));
rev[INDEX(a[i], j, not r0)].append(INDEX(j, b[i], r1));
visited = [False for i in range(N * N * 2)]
ord = []
def dfs0(i) :
visited[i] = True
for j in hen[i] :
if not visited[j] : dfs0(j)
ord.append(i)
group = [-1 for i in range(N * N * 2)]
group_cnt = 0
def dfs1(i) :
group[i] = group_cnt
for j in rev[i] :
if group[j] == -1 : dfs1(j)
for i in range(N * N * 2) :
if not visited[i] : dfs0(i)
ord = ord[::-1]
for i in ord :
if group[i] == -1 :
dfs1(i)
group_cnt += 1
possible = True
for i in range(N) :
for j in range(N) :
if group[INDEX(i, j, 0)] == group[INDEX(i, j, 1)] : possible = False
if not possible :
print("-1")
else :
for i in range(N) :
for j in range(N) :
if j : print(' ', end = '')
print(int(group[INDEX(i, j, 0)] < group[INDEX(i, j, 1)]), end = '')
print('')
QCFium