結果
| 問題 |
No.157 2つの空洞
|
| コンテスト | |
| ユーザー |
urutom
|
| 提出日時 | 2017-04-18 19:37:37 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 88 ms / 2,000 ms |
| コード長 | 708 bytes |
| コンパイル時間 | 176 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,544 KB |
| 最終ジャッジ日時 | 2024-07-19 07:46:37 |
| 合計ジャッジ時間 | 2,539 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 16 |
コンパイルメッセージ
Syntax OK
ソースコード
def color(s,c,h,w)
def dfs(s,c,x,y)
s[x][y]=c
[[1,0],[0,1],[-1,0],[0,-1]].each{|dx,dy|
nx=x+dx
ny=y+dy
dfs(s,c,nx,ny) if s[nx][ny]==?.
}
end
h.times{|i|w.times{|j|
if s[i][j]==?.
dfs(s,c,i,j)
return true
end
}}
false
end
def dist(p1,p2)
(p1[0]-p2[0]).abs+(p1[1]-p2[1]).abs-1
end
def min_dist(pts1,pts2)
ret=1<<30
pts1.each{|p1|pts2.each{|p2|
d=dist(p1,p2)
ret=d if d<ret
}}
ret
end
w,h=gets.split.map(&:to_i)
space=h.times.map{gets.chomp.chars.to_a}
color(space,?1,h,w)
color(space,?2,h,w)
pts1=[]
pts2=[]
space.each_with_index{|r,x|r.each_with_index{|c,y|
if c==?1
pts1<<[x,y]
elsif c==?2
pts2<<[x,y]
end
}}
p min_dist(pts1,pts2)
#puts space.map(&:join)
urutom