SPOJ 206 "Bitmap"
問題:https://www.spoj.pl/problems/BITMAP/
たぶん合ってるけど遅すぎて通らない.
for {gets stdin t} {$t>0} {incr t -1} { #puts [time { if ![expr [string compare [set s [gets stdin]] ""]] then { gets stdin s } scan $s {%s %s} n m set queue [dict create] for {set i 0} {$i<$n} {incr i} { set in [split [gets stdin] ""] for {set j 0} {$j<$m} {incr j} { set b($i,$j) [lindex $in $j] set a($i,$j) 0 if $b($i,$j) { set k [expr {$i-1}] if {$i&&!$b($k,$j)} { dict set queue "$k $j" 1 } set k [expr {$j-1}] if {$j&&!$b($i,$k)} { dict set queue "$i $k" 1 } } else { set k [expr {$i-1}] if {$i&&$b($k,$j)} { dict set queue "$i $j" 1 } set k [expr {$j-1}] if {$j&&$b($i,$k)} { dict set queue "$i $j" 1 } } } } while {[dict size $queue]>0} { dict for {l z} $queue { scan $l {%s %s} x y set a($x,$y) $z set b($x,$y) 1 } set tmp $queue set queue [dict create] dict for {l z} $tmp { scan $l {%s %s} x y set z [expr {$z+1}] set k [expr {$x-1}] if {$x&&!$b($k,$y)} { dict set queue "$k $y" $z } set k [expr {$x+1}] if {$k<$n&&!$b($k,$y)} { dict set queue "$k $y" $z } set k [expr {$y-1}] if {$y&&!$b($x,$k)} { dict set queue "$x $k" $z } set k [expr {$y+1}] if {$k<$m&&!$b($x,$k)} { dict set queue "$x $k" $z } } } for {set i 0} {$i<$n} {incr i} { set result [list] for {set j 0} {$j<$m} {incr j} { lappend result $a($i,$j) } puts $result } #}] }