매 턴 상대가 고른 이동 횟수만큼 방향 간선을 이동해 1번 정점에서 출발해 N번 정점에서 턴을 마치는 최소 턴 수를 구합니다.
보통7게임 이론그래프동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한256 MB현성이가 형 현민이와 게임을 한다. 게임은 정해진 맵 위에서 진행한다.
맵에는 원 N개와 화살표 M개가 그려져 있다. 각 화살표는 서로 다른 두 원을 잇고, 말은 화살표가 가리키는 방향으로만 지나갈 수 있다.
게임을 시작할 때 말은 1번 원 위에 있다. 매 턴마다 현민이가 1 이상의 정수를 하나 말하고, 현성이는 말한 수만큼 말을 움직인다. 한 번의 이동은 화살표 하나를 따라 옆 원으로 가는 것이다.
그 턴의 이동을 모두 마쳤을 때 말이 N번 원 위에 있으면 현성이가 이긴다. 이동이 아직 남은 상태에서 N번 원을 지나가면 게임은 끝나지 않는다. 이동을 다 하기 전에 따라갈 화살표가 없어지면 현민이가 이긴다. 게임이 끝없이 이어져도 현민이가 이긴다.
현민이는 두뇌 서바이벌 프로그램에서 준우승할 만큼 똑똑해서 게임마다 계속 이겼다. 그래서 현성이의 멘탈을 생각해 조금 봐주기로 했다. 매 턴을 시작할 때 부르는 수를 a, b, c 중에서만 고르기로 한 것이다. 그래도 현성이는 현민이를 이기지 못했다.
멘탈이 증발한 현성이가 당신에게 현민이를 이기는 전략을 짜 달라고 부탁했다. 현민이는 매 턴 말의 위치를 보고 자신에게 가장 유리한 수를 부르고, 현성이는 그 수를 들은 뒤에 어떻게 움직일지 정한다. 두 사람 모두 최선을 다할 때 현성이가 이길 수 있는지 판단하고, 이길 수 있다면 게임을 끝내는 데 필요한 최소 턴 수를 구하여라.
첫째 줄에 N, M, a, b, c가 주어진다. N은 원의 개수, M은 화살표의 개수이고, a, b, c는 현민이가 부를 수 있는 수다. (2≤N≤50, 0≤M≤N(N−1), 1≤a,b,c≤100)
둘째 줄부터 M개의 줄에 화살표의 시작점 u와 끝점 v가 주어진다. (1≤u,v≤N, u=v) 시작점과 끝점이 모두 같은 화살표가 두 번 주어지는 경우는 없다.
현성이가 현민이를 이길 수 없으면 IMPOSSIBLE을 출력한다. 이길 수 있으면 이기는 데 필요한 최소 턴 수를 출력한다.
첫 번째 예제에서는 현민이가 1과 2를 번갈아 부르면 게임이 끝나지 않으므로 현민이가 이긴다.
두 번째 예제에서는 아래 전략을 쓰면 된다.

두 번째 예제의 맵