結果
| 問題 | No.3504 Insert Maze |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-04-18 18:14:57 |
| 言語 | Go (1.26.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,830 bytes |
| 記録 | |
| コンパイル時間 | 16,380 ms |
| コンパイル使用メモリ | 279,176 KB |
| 実行使用メモリ | 439,808 KB |
| 最終ジャッジ日時 | 2026-04-18 18:16:45 |
| 合計ジャッジ時間 | 28,975 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 TLE * 2 -- * 55 |
ソースコード
package main
import . "fmt"
import . "os"
import bf "bufio"
func main() {
rd := bf.NewReader(Stdin)
var h,w int
Fscan(rd,&h,&w)
hh, ww := h+h-1, w+w-1
field := make([][]int, hh)
dist := make([][]int, hh)
for i := range field {
field[i] = make([]int, ww)
dist[i] = make([]int, ww)
}
for i := 0; i < h; i++ {
var s string
Fscan(rd,&s)
for j, ch := range s {
if ch == '#' {
field[i*2][j*2] = 1
}
}
}
dist[0][0] = -1
ps := []*P{ &P { 0, 0 } }
for i := 1; len(ps) > 0 ; i++ {
tmp := []*P{}
for _, p := range ps {
r1 := p.move(0, 1)
if r1.ok(field, dist, i) {
tmp = append(tmp, r1)
}
l1 := p.move(0, -1)
if l1.ok(field, dist, i) {
tmp = append(tmp, l1)
}
if p.col % 2 == 0 {
r2 := p.move(0, 2)
if r2.ok(field, dist, i) {
tmp = append(tmp, r2)
}
l2 := p.move(0, -2)
if l2.ok(field, dist, i) {
tmp = append(tmp, l2)
}
}
u1 := p.move(-1, 0)
if u1.ok(field, dist, i) {
tmp = append(tmp, u1)
}
d1 := p.move(1, 0)
if d1.ok(field, dist, i) {
tmp = append(tmp, d1)
}
if p.row % 2 == 0 {
u2 := p.move(-2, 0)
if u2.ok(field, dist, i) {
tmp = append(tmp, u2)
}
d2 := p.move(2, 0)
if d2.ok(field, dist, i) {
tmp = append(tmp, d2)
}
}
}
ps = tmp
}
if ans := dist[hh-1][ww-1]; ans == 0 {
Println(-1)
} else {
Println(ans)
}
}
type P struct {
row, col int
}
func (p *P)in(h, w int) bool {
return 0 <= p.row && p.row < h &&
0 <= p.col && p.col < w
}
func (p *P)ok(field [][]int, dist [][]int, x int) bool {
if !p.in(len(field), len(field[0])) {
return false
}
if field[p.row][p.col] == 0 &&
dist[p.row][p.col] == 0 {
dist[p.row][p.col] = x
return true
} else {
return false
}
}
func (p *P)move(dr, dc int) *P {
return &P{p.row+dr,p.col+dc}
}
ID 21712