import java.io.*;
import java.util.*;
class Main {
static int min = Integer.MAX_VALUE;
static boolean[] visited;
static HashMap<Integer, Integer> hash;
static Queue<Where> que;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
hash = new HashMap<>();
que = new LinkedList<>();
visited = new boolean[101];
for (int i = 0; i < M + N; i++) {
st = new StringTokenizer(br.readLine());
int key = Integer.parseInt(st.nextToken());
int value = Integer.parseInt(st.nextToken());
hash.put(key, value);
}
que.add(new Where(1, 0));
visited[1] = true;
bfs();
System.out.println(min);
}
public static void bfs() {
while (!que.isEmpty()) {
Where where = que.poll();
int now = where.now;
int num = where.num;
if (now == 100) {
min = Math.min(min, num);
return;
}
for (int i = 1; i <= 6; i++) {
int next = now + i;
if (next > 100 || visited[next]) {
continue;
}
if (hash.containsKey(next)) {
next = hash.get(next);
}
que.add(new Where(next, num + 1));
visited[next] = true;
}
}
}
static class Where {
int now;
int num;
public Where(int now, int num) {
this.now = now;
this.num = num;
}
}
}
백준 - 토마토 문제와 같이 정보를 저장하는 객체를 만들어주고 bfs를 실행할 때 객체 정보를 이용해 조건문을 만들어준다.
hash맵으로 이동해주는 조건 체크해서 큐에 넣으면 해결