結果
問題 |
No.157 2つの空洞
|
ユーザー |
![]() |
提出日時 | 2017-08-07 05:54:30 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
RE
|
実行時間 | - |
コード長 | 2,447 bytes |
コンパイル時間 | 120 ms |
コンパイル使用メモリ | 13,056 KB |
実行使用メモリ | 11,264 KB |
最終ジャッジ日時 | 2024-10-11 23:04:39 |
合計ジャッジ時間 | 1,783 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 RE * 1 |
other | AC * 14 RE * 2 |
ソースコード
# your code goes here #hole def ab(a1): if a1<0: a1*=-1 return a1 W,H=(int(i) for i in input().split()) C=[input() for i in range(H)] D=[] for i in range(H): D.append([]) for j in range(W): D[i].append(0) a=[] for i in range(H): a.append([]) for j in range(W): a[i].append(0) h=[[],[]] #print(C) for l in range(2): Nd=0 i=0 if l==1: i=h[0][0][0] while i<H and Nd==0: j=0 if l==1: j=h[0][0][1] while j<W and Nd==0: if C[i][j]=="." and l==0: D[i][j]=l+1 Nd=1 elif C[i][j]=="." and l==1: if D[i][j]!=1: D[i][j]=l+1 Nd=1 j+=1 i+=1 i-=1 j-=1 h[l].append([i,j]) v=[[i,j]] vn=[[i,j]] a[i][j]=1 while vn!=[]: i=0 v=vn vn=[] while i<len(v): j=-1 while j<2: k=-1 while k<2: if ab(j)+ab(k)<2: vh=v[i][0]+j vw=v[i][1]+k if a[vh][vw]==0: a[vh][vw]=1 if C[vh][vw]==".": D[vh][vw]=l+1 vn.append([vh,vw]) h[l].append([vh,vw]) k+=1 j+=1 i+=1 # print(D) #print(D) for i in range(H): for j in range(W): if D[i][j]==1: a[i][j]=1 else: a[i][j]=0 i=0 Nd=0 vn=h[0] v=[[0,0]] #print(a) while Nd==0 and i<W*H: v=vn vn=[] # print(v) j=0 # print(len(v)) while j<len(v): k=-1 while k<2: l=-1 while l<2: if ab(l)+ab(k)<2: # print(v[j]) # print(i) # print(j) vh=v[j][0]+k vw=v[j][1]+l # print(vh) if vh>=0 and vh<H and vw>=0 and vw<W: if a[vh][vw]==0: a[vh][vw]=1 if D[vh][vw]==2: Nd=1 elif C[vh][vw]=="#": vn.append([vh,vw]) l+=1 k+=1 j+=1 i+=1 print(i-1)