问题 D:蜘蛛交友
题目描述
在一个由 $n$ 只蜘蛛组成的庞大的群落中,每只蜘蛛的腿数可能不同。我们用 $a_i$ 来表示第 $i$ 只蜘蛛的腿数。蜘蛛之间存在一种特殊的友谊关系,这种关系决定它们之间能否直接通信。
友谊的具体定义如下:如果第 $i$ 只蜘蛛拥有的腿数 $a_i$ 和第 $j$ 只蜘蛛的腿数 $a_j$ 的最大公约数不等于 $1$,则这两只蜘蛛被视为朋友。换句话说,如果存在一个大于等于 $2$ 的整数 $k$,可以同时间整除 $a_i$ 和 $a_j$,那么 $i$ 和 $j$ 这两只蜘蛛间则有一条直接关系连接。
蜘蛛通过这种朋友关系来传递信息:若两只蜘蛛是朋友,它们之间可以在 $1$ 秒钟内直接传递信息。反之,如果两者直接并非朋友关系,那么信息则需要经过一系列中间蜘蛛传递。信息的传递需要经过若干只互为朋友的蜘蛛,逐步将信息转送到目标蜘蛛。
现在面临的问题是:给定从超始蜘蛛 $s$ 到目标蜘蛛 $t$ 传递信息的任务,求解在这个蜘蛛社区中,信息传递所需的最短时间。
你需要设计一个程序解决这个问题,计算出从源蜘蛛 $s$ 传递信息到目标蜘蛛 $t$ 所需的最短路径的相关信息,即参与信息传输的蜘蛛数量。
输入
输入的第一行包含一个整数 $n$, 表示蜘蛛群落中蜘蛛的数量
第二行包含 $n$ 个整数 $a_1,a_2,...,a_n$ 表示每只蜘蛛的腿数
第三行包含两个整数 $s$ 和 $t$,表示必须在它们之间发送信息的蜘蛛编号
$2\le n\le 3\times 10^5, 1\le a_i\le 3\times 10^5, 1\le s,t\le n$
输出
如果给定的一对蜘蛛之间无法传输信息,则输出 -1
否则,输出参与信息传输的蜘蛛数量
样例输入-1 复制
7
2 14 9 6 8 15 11
5 6
样例输出-1 复制
3
样例输入-2 复制
7
2 14 9 6 8 15 11
5 5
样例输出-2 复制
1
提示
样例解释1:
从 $5$ 号蜘蛛到 $6$ 号蜘蛛的信息最好是通过 $4$ 号蜘蛛,在此过程中,参与信息传输的蜘蛛数量为 $3$