import java.util.*;
import java.io.*;
/*
원숭이 무빙으로 가던 와중 앞에 장애물이 나타났을 때,
말 무빙을 치면 최소거리지 않을까
*/
public class Main
{
static class node implements Comparable<node>
{
int r;
int c;
int k;
int time;
public node(int r , int c , int k , int time)
{
this.r = r;
this.c = c;
this.k = k;
this.time = time;
}
public int compareTo(node n)
{
return time - n.time;
}
}
static int k , r , c , ans;
static int[][] map;
static boolean[][] visit;
static int[] mr = {-1,0,1,0};
static int[] mc = {0,1,0,-1};
static int[] hr = {-2,-2,-1,1,2,2,1,-1};
static int[] hc = {-1,1,2,2,1,-1,-2,-2};
static PriorityQueue<node> pq;
{
k
= Integer.
parseInt(br.
readLine());
c
= Integer.
parseInt(st.
nextToken()); r
= Integer.
parseInt(st.
nextToken()); map = new int[r][c];
visit = new boolean[r][c];
pq = new PriorityQueue<>();
for(int i = 0 ; i < r ; i++)
{
for(int j = 0 ; j < c ; j++)
{
map
[i
][j
] = Integer.
parseInt(st.
nextToken()); }
}
visit[0][0] = true;
pq.add(new node(0,0,k,0));
bfs();
}
public static void bfs()
{
while(!pq.isEmpty())
{
node nod = pq.poll();
System.
out.
println(nod.
r+","+nod.
c+" // "+nod.
time);
if(nod.r == r-1 && nod.c == c-1)
{
ans = nod.time;
return;
}
for(int i = 0 ; i < 4 ; i++)
{
int nr = nod.r + mr[i];
int nc = nod.c + mc[i];
if(nr >= 0 && nc >= 0 && nr < r && nc < c)
{
if(nod.k > 0 /*&& map[nr][nc] == 1*/)
{
horse_moving(nod.r,nod.c,nod.k,nod.time);
}
if(map[nr][nc] == 0 && !visit[nr][nc])
{
visit[nr][nc] = true;
pq.add(new node(nr,nc,nod.k,nod.time+1));
}
}
}
}
ans = -1;
}
public static void horse_moving(int r , int c , int k , int time)
{
System.
out.
println("뛰어넘으려는 시도: "+r
+","+c
); for(int i = 0 ; i < 8 ; i++)
{
int nr = r + hr[i];
int nc = c + hc[i];
if(nr >= 0 && nc >= 0 && nr < r && nc < c)
{
System.
out.
println("뛰어넘기 검사중...: "+nr
+","+nc
+" // "+map
[nr
][nc
]); if(!visit[nr][nc] && map[nr][nc] == 0)
{
System.
out.
println("뛰어넘은 결과: "+nr
+","+nc
); visit[nr][nc] = true;
pq.add(new node(nr,nc,k-1,time+1));
}
}
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwovKgrsm5DsiK3snbQg66y067mZ7Jy866GcIOqwgOuNmCDsmYDspJEg7JWe7JeQIOyepeyVoOusvOydtCDrgpjtg4DrgqzsnYQg65WMLArrp5Ag66y067mZ7J2EIOy5mOuptCDstZzshozqsbDrpqzsp4Ag7JWK7J2E6rmMCiovCgpwdWJsaWMgY2xhc3MgTWFpbgp7CglzdGF0aWMgY2xhc3Mgbm9kZSBpbXBsZW1lbnRzIENvbXBhcmFibGU8bm9kZT4KCXsKCQlpbnQgcjsKCQlpbnQgYzsKCQlpbnQgazsKCQlpbnQgdGltZTsKCQkKCQlwdWJsaWMgbm9kZShpbnQgciAsIGludCBjICwgaW50IGsgLCBpbnQgdGltZSkKCQl7CgkJCXRoaXMuciA9IHI7CgkJCXRoaXMuYyA9IGM7CgkJCXRoaXMuayA9IGs7CgkJCXRoaXMudGltZSA9IHRpbWU7CgkJfQoJCQoJCXB1YmxpYyBpbnQgY29tcGFyZVRvKG5vZGUgbikKCQl7CgkJCXJldHVybiB0aW1lIC0gbi50aW1lOwoJCX0KCX0KCXN0YXRpYyBpbnQgayAsIHIgLCBjICwgYW5zOwoJc3RhdGljIGludFtdW10gbWFwOwoJc3RhdGljIGJvb2xlYW5bXVtdIHZpc2l0OwoJc3RhdGljIGludFtdIG1yID0gey0xLDAsMSwwfTsKCXN0YXRpYyBpbnRbXSBtYyA9IHswLDEsMCwtMX07CglzdGF0aWMgaW50W10gaHIgPSB7LTIsLTIsLTEsMSwyLDIsMSwtMX07CglzdGF0aWMgaW50W10gaGMgPSB7LTEsMSwyLDIsMSwtMSwtMiwtMn07CglzdGF0aWMgUHJpb3JpdHlRdWV1ZTxub2RlPiBwcTsKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbgoJewoJCUJ1ZmZlcmVkUmVhZGVyIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKCQlrID0gSW50ZWdlci5wYXJzZUludChici5yZWFkTGluZSgpKTsKCQkKCQlTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGJyLnJlYWRMaW5lKCkpOwoJCWMgPSBJbnRlZ2VyLnBhcnNlSW50KHN0Lm5leHRUb2tlbigpKTsKCQlyID0gSW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oKSk7CgkJbWFwID0gbmV3IGludFtyXVtjXTsKCQl2aXNpdCA9IG5ldyBib29sZWFuW3JdW2NdOwoJCXBxID0gbmV3IFByaW9yaXR5UXVldWU8PigpOwoJCQoJCWZvcihpbnQgaSA9IDAgOyBpIDwgciA7IGkrKykKCQl7CgkJCXN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihici5yZWFkTGluZSgpKTsKCQkJZm9yKGludCBqID0gMCA7IGogPCBjIDsgaisrKQoJCQl7CgkJCQltYXBbaV1bal0gPSBJbnRlZ2VyLnBhcnNlSW50KHN0Lm5leHRUb2tlbigpKTsKCQkJfQoJCX0KCQkKCQl2aXNpdFswXVswXSA9IHRydWU7CgkJcHEuYWRkKG5ldyBub2RlKDAsMCxrLDApKTsKCQkKCQliZnMoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oYW5zKTsKCX0KCXB1YmxpYyBzdGF0aWMgdm9pZCBiZnMoKQoJewoJCXdoaWxlKCFwcS5pc0VtcHR5KCkpCgkJewoJCQlub2RlIG5vZCA9IHBxLnBvbGwoKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKG5vZC5yKyIsIitub2QuYysiIC8vICIrbm9kLnRpbWUpOwoJCQkKCQkJCgkJCWlmKG5vZC5yID09IHItMSAmJiBub2QuYyA9PSBjLTEpCgkJCXsKCQkJCWFucyA9IG5vZC50aW1lOwoJCQkJcmV0dXJuOwoJCQl9CgkJCQoJCQlmb3IoaW50IGkgPSAwIDsgaSA8IDQgOyBpKyspCgkJCXsKCQkJCWludCBuciA9IG5vZC5yICsgbXJbaV07CgkJCQlpbnQgbmMgPSBub2QuYyArIG1jW2ldOwoJCQkJCgkJCQlpZihuciA+PSAwICYmIG5jID49IDAgJiYgbnIgPCByICYmIG5jIDwgYykKCQkJCXsKCQkJCQlpZihub2QuayA+IDAgLyomJiBtYXBbbnJdW25jXSA9PSAxKi8pCgkJCQkJewoJCQkJCQlob3JzZV9tb3Zpbmcobm9kLnIsbm9kLmMsbm9kLmssbm9kLnRpbWUpOwoJCQkJCX0KCQkJCQlpZihtYXBbbnJdW25jXSA9PSAwICYmICF2aXNpdFtucl1bbmNdKQoJCQkJCXsKCQkJCQkJdmlzaXRbbnJdW25jXSA9IHRydWU7CgkJCQkJCXBxLmFkZChuZXcgbm9kZShucixuYyxub2Quayxub2QudGltZSsxKSk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJCQoJCWFucyA9IC0xOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIGhvcnNlX21vdmluZyhpbnQgciAsIGludCBjICwgaW50IGsgLCBpbnQgdGltZSkKCXsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIuubsOyWtOuEmOycvOugpOuKlCDsi5zrj4Q6ICIrcisiLCIrYyk7CgkJZm9yKGludCBpID0gMCA7IGkgPCA4IDsgaSsrKQoJCXsKCQkJaW50IG5yID0gciArIGhyW2ldOwoJCQlpbnQgbmMgPSBjICsgaGNbaV07CgkJCQkJCQoJCQlpZihuciA+PSAwICYmIG5jID49IDAgJiYgbnIgPCByICYmIG5jIDwgYykKCQkJewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCLrm7DslrTrhJjquLAg6rKA7IKs7KSRLi4uOiAiK25yKyIsIituYysiIC8vICIrbWFwW25yXVtuY10pOwoJCQkJaWYoIXZpc2l0W25yXVtuY10gJiYgbWFwW25yXVtuY10gPT0gMCkKCQkJCXsKCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIuubsOyWtOuEmOydgCDqsrDqs7w6ICIrbnIrIiwiK25jKTsKCQkJCQl2aXNpdFtucl1bbmNdID0gdHJ1ZTsKCQkJCQlwcS5hZGQobmV3IG5vZGUobnIsbmMsay0xLHRpbWUrMSkpOwoJCQkJfQoJCQkJCQkJCQkKCQkJfQoJCX0KCX0KfQ==
0,0 // 0
뛰어넘으려는 시도: 0,0
뛰어넘으려는 시도: 0,0
0,1 // 1
뛰어넘으려는 시도: 0,1
뛰어넘으려는 시도: 0,1
뛰어넘으려는 시도: 0,1
0,2 // 2
뛰어넘으려는 시도: 0,2
뛰어넘으려는 시도: 0,2
뛰어넘으려는 시도: 0,2
1,1 // 2
뛰어넘으려는 시도: 1,1
뛰어넘으려는 시도: 1,1
뛰어넘으려는 시도: 1,1
뛰어넘으려는 시도: 1,1
1,2 // 3
뛰어넘으려는 시도: 1,2
뛰어넘기 검사중...: 0,0 // 0
뛰어넘으려는 시도: 1,2
뛰어넘기 검사중...: 0,0 // 0
뛰어넘으려는 시도: 1,2
뛰어넘기 검사중...: 0,0 // 0
뛰어넘으려는 시도: 1,2
뛰어넘기 검사중...: 0,0 // 0
2,1 // 3
뛰어넘으려는 시도: 2,1
뛰어넘기 검사중...: 0,0 // 0
뛰어넘으려는 시도: 2,1
뛰어넘기 검사중...: 0,0 // 0
뛰어넘으려는 시도: 2,1
뛰어넘기 검사중...: 0,0 // 0
뛰어넘으려는 시도: 2,1
뛰어넘기 검사중...: 0,0 // 0
0,3 // 3
뛰어넘으려는 시도: 0,3
뛰어넘으려는 시도: 0,3
2,0 // 4
뛰어넘으려는 시도: 2,0
뛰어넘으려는 시도: 2,0
뛰어넘으려는 시도: 2,0
1,3 // 4
뛰어넘으려는 시도: 1,3
뛰어넘기 검사중...: 0,1 // 0
뛰어넘으려는 시도: 1,3
뛰어넘기 검사중...: 0,1 // 0
뛰어넘으려는 시도: 1,3
뛰어넘기 검사중...: 0,1 // 0
3,0 // 5
뛰어넘으려는 시도: 3,0
뛰어넘으려는 시도: 3,0
2,3 // 5
뛰어넘으려는 시도: 2,3
뛰어넘기 검사중...: 0,2 // 0
뛰어넘기 검사중...: 1,1 // 0
뛰어넘으려는 시도: 2,3
뛰어넘기 검사중...: 0,2 // 0
뛰어넘기 검사중...: 1,1 // 0
뛰어넘으려는 시도: 2,3
뛰어넘기 검사중...: 0,2 // 0
뛰어넘기 검사중...: 1,1 // 0
3,3 // 6
6