結果

問題 No.157 2つの空洞
ユーザー rocoderrocoder
提出日時 2017-08-07 11:43:06
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 35 ms / 2,000 ms
コード長 2,707 bytes
コンパイル時間 90 ms
コンパイル使用メモリ 13,184 KB
実行使用メモリ 11,264 KB
最終ジャッジ日時 2024-10-11 23:35:34
合計ジャッジ時間 1,493 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 32 ms
11,008 KB
testcase_01 AC 32 ms
10,880 KB
testcase_02 AC 31 ms
11,008 KB
testcase_03 AC 32 ms
11,136 KB
testcase_04 AC 32 ms
11,136 KB
testcase_05 AC 32 ms
11,136 KB
testcase_06 AC 32 ms
11,264 KB
testcase_07 AC 31 ms
11,136 KB
testcase_08 AC 31 ms
11,008 KB
testcase_09 AC 33 ms
11,136 KB
testcase_10 AC 31 ms
11,008 KB
testcase_11 AC 32 ms
11,008 KB
testcase_12 AC 32 ms
11,008 KB
testcase_13 AC 32 ms
11,264 KB
testcase_14 AC 34 ms
11,136 KB
testcase_15 AC 34 ms
11,136 KB
testcase_16 AC 34 ms
11,136 KB
testcase_17 AC 35 ms
11,136 KB
testcase_18 AC 34 ms
11,264 KB
testcase_19 AC 34 ms
11,136 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

# 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):
  #  print("l")
  #  print(l)
    Nd=0
    i=0
    if l==1:
        i=h[0][0]
 #       print("l2i")
    while i<H and Nd==0:
        j=0
#        if l==1 and :
#            j=h[0][1]
#            print(j)
        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
    #                print("l2")
      #              print(D)
            j+=1
        i+=1
    i-=1
    j-=1
    if l==0:
        h.append([i,j])
#    print(D)
    v=[[i,j]]
    vn=[[i,j]]
    a[i][j]=1
 #   print(a)
    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])
                                if l==0:
                                    h.append([vh,vw])
   #                                 print(h)
                    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
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)
0