結果

問題 No.157 2つの空洞
ユーザー 6soukiti296soukiti29
提出日時 2017-09-21 09:09:05
言語 Nim
(2.0.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,493 bytes
コンパイル時間 832 ms
コンパイル使用メモリ 55,876 KB
最終ジャッジ日時 2023-09-12 15:13:02
合計ジャッジ時間 1,788 ms
ジャッジサーバーID
(参考情報)
judge11 / judge15
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 26) Error: cannot open file: queues

ソースコード

diff #

import sequtils,strutils,queues
var
    W,H : int
    C = newSeq[string](0)
    cnt : int
    D = [[0, 1], [1, 0], [-1, 0], [0, -1]]
(W, H) = stdin.readline.split.map(parseInt)
for h in 1..H:
    C.add(stdin.readline)
    
proc tansakuA(px, py : int)=
    var qu = initQueue[array[2, int]](1024)
    qu.add([py, px])
    while qu.len > 0:
        var a = qu.pop
        C[a[0]][a[1]] = chr(cnt + ord('0'))
        for d in D:
            var (ny, nx) = (a[0] + d[1], a[1] + d[0])
            if ny < 0 or ny >= H:
                continue
            if nx < 0 or ny >= W:
                continue
            if C[ny][nx] == '.':
                C[ny][nx] = chr(cnt + ord('0'))
                qu.add([ny, nx])
        
    
for i in 0..<H:
    for j in 0..<W:
        if C[i][j] == '.':
            tansakuA(j, i)
            cnt += 1
cnt = 1
block tansaku:
    while true:
        for i in 0..<H:
            for j in 0..<W:
                if C[i][j] == chr(cnt + ord('0')):
                    for d in D:
                        var (ny, nx) = (i + d[1], j + d[0])
                        if ny < 0 or ny >= H:
                            continue
                        if nx < 0 or nx >= W:
                            continue
                        if C[ny][nx] == '#':
                            C[ny][nx] = char(cnt + 1 + ord('0'))
                        elif C[ny][nx] == '0':
                            echo cnt - 1
                            break tansaku
        cnt += 1
0