結果
| 問題 |
No.421 しろくろチョコレート
|
| コンテスト | |
| ユーザー |
ntuda
|
| 提出日時 | 2025-03-21 19:08:01 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,846 bytes |
| コンパイル時間 | 461 ms |
| コンパイル使用メモリ | 81,792 KB |
| 実行使用メモリ | 80,916 KB |
| 最終ジャッジ日時 | 2025-03-21 19:08:08 |
| 合計ジャッジ時間 | 5,971 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 WA * 40 RE * 2 |
ソースコード
N, M = map(int, input().split())
S = [input() for _ in range(N)]
NM = N * M
E = [[] for _ in range(NM)]
D = [0] * NM
F = [0] * NM
WB = [0, 0]
ans = 0
Q = []
nv = [1] * NM
for i in range(N):
for j in range(M):
ij = i * M + j
if S[i][j] == ".":
nv[ij] = 0
continue
if i < N - 1 and S[i + 1][j] != ".":
ij2 = (i + 1) * M + j
D[ij] += 1
D[ij2] += 1
E[ij].append(ij2)
E[ij2].append(ij)
if j < M - 1 and S[i][j + 1] != ".":
ij2 = i * M + j + 1
D[ij] += 1
D[ij2] += 1
E[ij].append(ij2)
E[ij2].append(ij)
if D[ij] == 0:
nv[ij] = 0
WB[ij % 2] += 1
elif D[ij] == 1:
nv[ij] = 0
Q.append(ij)
ans = 0
while Q:
x = Q.pop()
cnt = 0
for y in E[x]:
if nv[y]:
D[y] -= 1
if F[x] == 0:
nv[y] = 0
F[x] = 1
F[y] = 1
ans += 100
Q.append(y)
elif D[y] == 1:
nv[y] = 0
Q.append(y)
else:
if F[x] == 0:
if F[y] == 0:
F[x] = 1
F[y] = 1
ans += 100
if F[x] == 0:
WB[x % 2] += 1
#print(x, nv, D, F, ans, Q)
def dfs(x):
for y in E[x]:
if nv[y]:
nv[y] = 0
WB2[y % 2] += 1
dfs(y)
for i in range(NM):
if nv[i]:
nv[i] = 0
WB2 = [0, 0]
WB2[i % 2] += 1
dfs(i)
a, b = WB2
ans += 100 * min(a, b)
if a > b:
WB[0] += 1
elif a < b:
WB[1] += 1
a, b = WB
if a < b:
a, b = b, a
ans += 10 * b
ans += a - b
print(ans)
ntuda