Submission #365606


Source Code Expand

Map = Struct.new(:m, :h, :w, :t) do
  def dijkstra(start, goal)
    tree = {start => [0, nil, nil]}
 
    loop do
      u, ui = tree.min {|(_,a),(_,b)| a.size == 2 ? 1 : b.size == 2 ? -1 : a[0] <=> b[0] }
      break if ui.size != 3 || u == goal
      ui.pop
 
      ud = ui[0]
      each_neighbor(u) do |n|
        alt = ud + yield(u, n)
        t = tree[n]
 
        if t.nil?
          tree[n] = [alt, u, nil]
        elsif alt < t[0]
          t[0] = alt
          t[1] = u
        end
      end
    end
 
    tree
  end
 
  def each_neighbor(node)
    y, x = node.divmod(w)
    yield node - 1 if x > 0
    yield node + 1 if x < w - 1
    yield node - w if y > 0
    yield node + w if y < h - 1
  end
 
  def solve
    mm = m.join
    z = mm.size
    s = mm.index('S')
    g = mm.index('G')
    (1..t).bsearch {|x|
      paths = dijkstra(s, g) {|u, n| mm.getbyte(n) == 35 ? x : 1 }
      t < paths[g][0]
    } - 1
  end
end
 
i=STDIN
h,w,t=i.gets.split.map(&:to_i)
m=(1..h).map{i.gets.chomp}
p Map.new(m, h, w, t).solve

Submission Info

Submission Time
Task C - 壁抜け
User snipsnipsnip
Language Ruby (2.1.5p273)
Score 100
Code Size 1072 Byte
Status AC
Exec Time 144 ms
Memory 5356 KiB

Compile Error

./Main.rb:37: warning: assigned but unused variable - z

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 40 / 40 30 / 30 30 / 30
Status
AC × 3
AC × 16
AC × 42
AC × 68
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt
Subtask1 subtask0_sample_01.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
Subtask2 subtask0_sample_01.txt, subtask0_sample_02.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, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt, subtask2_30.txt, subtask2_31.txt, subtask2_32.txt, subtask2_33.txt, subtask2_34.txt, subtask2_35.txt, subtask2_36.txt, subtask2_37.txt, subtask2_38.txt, subtask2_39.txt, subtask2_40.txt
Subtask3 subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.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, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt, subtask2_30.txt, subtask2_31.txt, subtask2_32.txt, subtask2_33.txt, subtask2_34.txt, subtask2_35.txt, subtask2_36.txt, subtask2_37.txt, subtask2_38.txt, subtask2_39.txt, subtask2_40.txt, subtask3_41.txt, subtask3_42.txt, subtask3_43.txt, subtask3_44.txt, subtask3_45.txt, subtask3_46.txt, subtask3_47.txt, subtask3_48.txt, subtask3_49.txt, subtask3_50.txt, subtask3_51.txt, subtask3_52.txt, subtask3_53.txt, subtask3_54.txt, subtask3_55.txt, subtask3_56.txt, subtask3_57.txt, subtask3_58.txt, subtask3_59.txt, subtask3_60.txt, subtask3_61.txt, subtask3_62.txt, subtask3_63.txt, subtask3_64.txt, subtask3_65.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 67 ms 5100 KiB
subtask0_sample_02.txt AC 57 ms 5100 KiB
subtask0_sample_03.txt AC 64 ms 5204 KiB
subtask1_01.txt AC 66 ms 5100 KiB
subtask1_02.txt AC 60 ms 5100 KiB
subtask1_03.txt AC 60 ms 5096 KiB
subtask1_04.txt AC 61 ms 5096 KiB
subtask1_05.txt AC 60 ms 5100 KiB
subtask1_06.txt AC 60 ms 5096 KiB
subtask1_07.txt AC 59 ms 5092 KiB
subtask1_08.txt AC 58 ms 5096 KiB
subtask1_09.txt AC 67 ms 5228 KiB
subtask1_10.txt AC 61 ms 5096 KiB
subtask1_11.txt AC 61 ms 5100 KiB
subtask1_12.txt AC 61 ms 5100 KiB
subtask1_13.txt AC 60 ms 5144 KiB
subtask1_14.txt AC 60 ms 5096 KiB
subtask1_15.txt AC 60 ms 5096 KiB
subtask2_16.txt AC 61 ms 5100 KiB
subtask2_17.txt AC 74 ms 5100 KiB
subtask2_18.txt AC 74 ms 5224 KiB
subtask2_19.txt AC 73 ms 5100 KiB
subtask2_20.txt AC 73 ms 5268 KiB
subtask2_21.txt AC 74 ms 5228 KiB
subtask2_22.txt AC 73 ms 5100 KiB
subtask2_23.txt AC 71 ms 5096 KiB
subtask2_24.txt AC 74 ms 5096 KiB
subtask2_25.txt AC 64 ms 5096 KiB
subtask2_26.txt AC 66 ms 5100 KiB
subtask2_27.txt AC 62 ms 5100 KiB
subtask2_28.txt AC 59 ms 5100 KiB
subtask2_29.txt AC 64 ms 5096 KiB
subtask2_30.txt AC 63 ms 5196 KiB
subtask2_31.txt AC 61 ms 5184 KiB
subtask2_32.txt AC 66 ms 5096 KiB
subtask2_33.txt AC 70 ms 5228 KiB
subtask2_34.txt AC 64 ms 5212 KiB
subtask2_35.txt AC 66 ms 5228 KiB
subtask2_36.txt AC 62 ms 5100 KiB
subtask2_37.txt AC 68 ms 5100 KiB
subtask2_38.txt AC 66 ms 5096 KiB
subtask2_39.txt AC 67 ms 5204 KiB
subtask2_40.txt AC 68 ms 5224 KiB
subtask3_41.txt AC 59 ms 5100 KiB
subtask3_42.txt AC 138 ms 5356 KiB
subtask3_43.txt AC 106 ms 5228 KiB
subtask3_44.txt AC 136 ms 5272 KiB
subtask3_45.txt AC 144 ms 5220 KiB
subtask3_46.txt AC 108 ms 5224 KiB
subtask3_47.txt AC 113 ms 5224 KiB
subtask3_48.txt AC 78 ms 5220 KiB
subtask3_49.txt AC 120 ms 5220 KiB
subtask3_50.txt AC 62 ms 5220 KiB
subtask3_51.txt AC 92 ms 5224 KiB
subtask3_52.txt AC 85 ms 5272 KiB
subtask3_53.txt AC 65 ms 5220 KiB
subtask3_54.txt AC 61 ms 5224 KiB
subtask3_55.txt AC 61 ms 5224 KiB
subtask3_56.txt AC 68 ms 5100 KiB
subtask3_57.txt AC 63 ms 5224 KiB
subtask3_58.txt AC 139 ms 5228 KiB
subtask3_59.txt AC 80 ms 5224 KiB
subtask3_60.txt AC 119 ms 5224 KiB
subtask3_61.txt AC 63 ms 5220 KiB
subtask3_62.txt AC 101 ms 5200 KiB
subtask3_63.txt AC 63 ms 5212 KiB
subtask3_64.txt AC 140 ms 5348 KiB
subtask3_65.txt AC 95 ms 5224 KiB