Submission #1606113


Source Code Expand

(use util.queue)
; 入力
(define R (read))
(define C (read))
(define sy (read))
(define sx (read))
(define gy (read))
(define gx (read))
; 残った改行文字の処理
(read-char)
; cの宣言
; cの要素をベクターにする
(define c (make-vector R))
(let loop-r ((raw 0))
  (if (< raw R)
    (begin
      (vector-set! c raw (make-vector C))
      (loop-r (+ raw 1)))))

; cに値をセット
(let loop-r ((raw 0))
  (if (< raw R)
    (begin
      (let loop-c ((col 0))
        (if (< col C)
          (begin
            (vector-set! (vector-ref c raw) col (read-char))
            (loop-c (+ col 1)))))
      (read-char)
      (loop-r (+ raw 1)))))

; キューの準備
(define q (make-queue))
; 座標と距離のペアをキューで扱う
(enqueue! q (cons (cons (- sy 1) (- sx 1)) 0))

; 解答の計算
(let solve ()
  (let* ((top (dequeue! q)) (x (car (car top))) (y (cdr (car top)))
    (xp (+ x 1)) (xm (- x 1)) (yp (+ y 1)) (ym (- y 1))
    (d (cdr top)))
    (if (and (= x (- gx 1)) (= y (- gy 1)))
      (begin (display d) (display "\n"))
      ; 近傍マスの距離確定とエンキュー
      (begin
        ; 右のマス
        (if (char=? (vector-ref (vector-ref c y) xp) #\.)
          (begin (vector-set! (vector-ref c y) xp #\#)
            (enqueue! q (cons (cons xp y) (+ d 1)))))
        ; 下のマス
        (if (char=? (vector-ref (vector-ref c yp) x) #\.)
          (begin (vector-set! (vector-ref c yp) x #\#)
            (enqueue! q (cons (cons x yp) (+ d 1)))))
        ; 左のマス
        (if (char=? (vector-ref (vector-ref c y) xm) #\.)
          (begin (vector-set! (vector-ref c y) xm #\#)
            (enqueue! q (cons (cons xm y) (+ d 1)))))
        ; 上のマス
        (if (char=? (vector-ref (vector-ref c ym) x) #\.)
          (begin (vector-set! (vector-ref c ym) x #\#)
            (enqueue! q (cons (cons x ym) (+ d 1)))))
        (solve)))))

Submission Info

Submission Time
Task C - 幅優先探索
User kanji1896
Language Scheme (Gauche 0.9.3.3)
Score 100
Code Size 1970 Byte
Status AC
Exec Time 28 ms
Memory 4560 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 25
Set Name Test Cases
Sample subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt
All subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt
Case Name Status Exec Time Memory
subtask0_sample01.txt AC 28 ms 4560 KB
subtask0_sample02.txt AC 8 ms 3196 KB
subtask0_sample03.txt AC 9 ms 3324 KB
subtask1_01.txt AC 8 ms 3324 KB
subtask1_02.txt AC 8 ms 3324 KB
subtask1_03.txt AC 8 ms 3324 KB
subtask1_04.txt AC 9 ms 3324 KB
subtask1_05.txt AC 8 ms 3324 KB
subtask1_06.txt AC 9 ms 3324 KB
subtask1_07.txt AC 8 ms 3196 KB
subtask1_08.txt AC 8 ms 3196 KB
subtask1_09.txt AC 9 ms 3324 KB
subtask1_10.txt AC 8 ms 3324 KB
subtask1_11.txt AC 10 ms 3324 KB
subtask1_12.txt AC 9 ms 3324 KB
subtask1_13.txt AC 8 ms 3324 KB
subtask1_14.txt AC 8 ms 3196 KB
subtask1_15.txt AC 9 ms 3324 KB
subtask1_16.txt AC 9 ms 3324 KB
subtask1_17.txt AC 9 ms 3324 KB
subtask1_18.txt AC 9 ms 3324 KB
subtask1_19.txt AC 8 ms 3324 KB
subtask1_20.txt AC 9 ms 3324 KB
subtask1_21.txt AC 9 ms 3324 KB
subtask1_22.txt AC 9 ms 3324 KB