BOJ 8052 Agents

BOJ 8052 Agents

문제 링크:

문제 내용

nn개의 정점과 mm개의 방향 간선을 갖는 방향 그래프가 주어집니다.

에이전트 1은 a1a_1번 정점에, 에이전트 2는 a2a_2번 정점에 있습니다. 각 에이전트는 하루가 지날 때마다 하나의 간선을 따라 이동할 수 있으며, 연속 이틀 동안 같은 정점에 머물 수 없습니다.

이때, 두 에이전트가 같은 날에 서로 같은 정점을 방문하는 데 걸리는 최소 시간을 구하세요.

입력

첫 번째 줄에는 정점의 수 nn과 간선의 수 mm이 주어집니다. (1n2501 \le n \le 250, 0mn(n1)0 \le m \le n(n-1))

두 번째 줄에는 두 에이전트가 현재 있는 정점의 번호 a1a_1a2a_2가 주어집니다. (1a1,a2n1 \le a_1, a_2 \le n, a1a2a_1 \neq a_2)

다음 mm줄에 걸쳐서, 각 간선의 출발 정점의 번호 uu와 도착 정점의 번호 vv가 주어집니다. (1u,vn1 \le u, v \le n, uvu \neq v)

중복된 간선은 주어지지 않습니다.

출력

두 에이전트가 만나는 것이 가능하다면, 두 에이전트가 만나는 데 걸리는 최소 일수를 출력합니다.

불가능하다면, NIE를 출력합니다.

문제 풀이

스포일러

일단 (에이전트 1의 위치, 에이전트 2의 위치)의 쌍을 하나의 상태로 볼 수 있습니다. 그러면 각 상태에서의 상태 전이의 개수는 최대 n2n^2이므로, 단순 BFS로는 통과하기 어렵습니다.

이 전이의 개수를 nn으로 줄이기 위해, 에이전트 1과 에이전트 2를 번갈아서 움직이는 방법을 생각할 수 있습니다. 그러면 상태에는 누가 움직일 턴인지를 나타내는 3번째 값이 추가됩니다. 이제 BFS를 마친 뒤에, 각각의 도착점 ii에 대해 “두 에이전트가 모두 ii에 있고 에이전트 1이 움직일 차례"인 상태의 거리를 확인하여 최소의 절반을 출력하면 됩니다.

Last updated on