SP349 AROUND - Around the world
题目描述
FJ 欲乘飞机访问他在世界各地的 $N(1\leq N\leq 5000)$ 个朋友(编号为 $1,\ldots,N$),他知道每个朋友的农场所在的经度,该经度是一个角度($0,\ldots,359$内的整数)。在本题中,我们将地球视为一个圆而非球形,经度在此圆上顺时针方向递增,描述了地球上的每一个位置。FJ 知道连接不同农场的 $M(1\leq M \leq 25000)$ 条双向航班的时间表,飞机始终沿地表的最短路径行驶(即沿圆上两点的最短弧线行驶)。两个农场间的最短路径是唯一的,因此,在圆直径上相对的两个农场之间不存在最短路径。每次飞机飞行都可描述为顺时针或逆时针方向飞行。例如,经度 $30$ 到经度 $35$ 的飞行是顺时针,经度 $350$ 到经度 $10$ 的飞行也是顺时针。但是,从经度 $350$ 到经度 $200$ 的飞行是逆时针。如果 FJ 可以环游世界,沿途拜访他的一些朋友,那会觉得很得劲。他想知道这是否可能,如果可以,他可以进行的最少飞行次数是多少。他想在他最好的朋友(在下面的输入中第一个列出的朋友)的位置开始和结束旅程。为了确保他实际上相对地球旋转,他想保证他所行进的顺时针距离与他所行进的逆时针距离不同。
输入格式
第一行:两个用空格隔开的整数 $N$ 和 $M$。
第二行到 $N+1$ 行:第 $i+1$ 行有一个整数,表示第 $i$ 个农场的经度。第二行是他最好的朋友的地址。
第 $N+2$ 行到 $N+M+1$ 行:第 $N+i+1$ 行有两个整数,表示这两个农场之间有航线。
输出格式
一个整数,表示 FJ 完成旅行的最少飞行次数。每次 FJ 从一个农场前往另一个农场算乘一次飞机。如果不可能做到环球旅行则输出`-1`。
**输入/输出样例解释**
输入样例:FJ 在0度、120度和240度有三个朋友。三次飞行:0120,120240,0240。旅程必须在经度0开始和结束。
输出样例:FJ 必须拜访所有3个朋友来进行一次完整的环球旅行。
说明/提示
Input details
Farmer John has three friends at longitudes 0, 120, and 240. There are
three flights: 0120, 120240, and 0240. The journey must start and
finish at longitude 0.