結果
| 問題 | No.3732 Labyrinth Maker |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-19 14:33:52 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 403 ms / 2,000 ms |
| + 196µs | |
| コード長 | 1,613 bytes |
| 記録 | |
| コンパイル時間 | 1,490 ms |
| コンパイル使用メモリ | 82,040 KB |
| 実行使用メモリ | 299,968 KB |
| 最終ジャッジ日時 | 2026-09-19 14:34:47 |
| 合計ジャッジ時間 | 42,200 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 59 |
ソースコード
def hamilton(N):
if N%2==0:
ans=[(0,0)]
for i in range(N):
rng=range(1,N)
if i%2==1:
rng=reversed(rng)
for j in rng:
ans.append((i,j))
for i in range(N-1,0,-1):
ans.append((i,0))
return ans
else:
ans=[(0,0)]
for i in range(N-2):
rng=range(1,N)
if i%2==1:
rng=reversed(rng)
for j in rng:
ans.append((i,j))
ans.append((N-2,N-1))
for i in range(N-2,0,-1):
if i%2==1:
ans.append((N-2,i))
ans.append((N-1,i))
else:
ans.append((N-1,i))
ans.append((N-2,i))
for i in range(N-1,0,-1):
ans.append((i,0))
return ans
T=int(input())
for _ in range(T):
N=int(input())
A=[list(map(int,input().split())) for i in range(N)]
hp=hamilton(N)
if N%2==1:
A[N-1][N-2]+=A[N-1][N-1]
A[N-1][N-1]=0
cum=[0]
for i,j in hp:
cum.append((cum[-1]+A[i][j])%N)
if cum[-1]!=0:
print(-1)
continue
cum.pop()
cnt=[[] for i in range(N)]
sep=[]
for i in range(len(cum)):
cnt[cum[i]].append(i)
for i in range(N):
if len(cnt[i])>=N:
sep=cnt[i][:N]
ans=[[-1]*N for i in range(N)]
sep=[0]+sep+[len(hp)]
for i in range(N+1):
for j in range(sep[i],sep[i+1]):
ans[hp[j][0]][hp[j][1]]=i%N+1
if N%2==1:
ans[N-1][N-1]=ans[N-1][N-2]
for i in ans:
print(*i)