Prime Routing
Time limit2sMemory limit512 MB
Find the minimum prime length of a walk from S to T in an undirected graph, where cables may be reused; print -1 if impossible.
- Level
Medium7 of 10
- Topics
- Graph, BFS, Number theory, Shortest path
- Solved
- No attempts yet
Problem
Fox Jiro is one of the staff members of the ACM-ICPC 2018 Asia Yokohama Regional Contest and is responsible for designing the network for the venue of the contest. His network consists of computers, which are connected by cables. The -th cable connects the -th computer and the -th computer, and it carries data in both directions. Your team will use the -th computer in the contest, and a judge server is the -th computer.
He decided to adjust the routing algorithm of the network to maximize the performance of the contestants through the magical power of prime numbers. In this algorithm, a packet (a unit of data carried by the network) is sent from your computer to the judge server passing through the cables a prime number of times if possible. If it is impossible, the contestants cannot benefit by the magical power of prime numbers. To accomplish this target, a packet is allowed to pass through the same cable multiple times.
You decided to write a program to calculate the minimum number of times a packet from to needed to pass through the cables. If the number of times a packet passes through the cables cannot be a prime number, print .
Input
The input consists of a single test case, formatted as follows.
$N$ $M$ $S$ $T$ $a_1$ $b_1$ $\vdots$ $a_M$ $b_M$
The first line consists of four integers , , , and (, , , ). The -th line of the following lines consists of two integers and (), which means that the -th cable connects the -th computer and the -th computer in the network. You can assume that the network satisfies the following conditions.
- The network has no multi-edge, i.e., for all , ().
- The packets from computers are reachable to by passing through some number of cables. The number is not necessarily a prime.
Output
If there are ways such that the number of times a packet sent from to passes through the cables is a prime number, print the minimum prime number of times in one line. Otherwise, print .