#P2432. Around the world

Around the world

题目描述

多年来,Farmer John(FJ)结识了世界各地许多农场主朋友。他打算去拜访几位好友,比如英国的 Farmer Ted 和荷兰的 Boer Harms。

FJ 已知每位朋友所在农场的经度(一个 [0,359][0, 359] 的整数角度)。为简化问题,我们将地球视为一个圆圈,而不是复杂的球体。

在这个圆形地球上,经度顺时针方向递增。FJ 将乘飞机前往这些农场,每段航班都是顺着地球表面的最短路径飞行(也就是圆上的最短弧线)。

关于方向的说明:

如果一架飞机从经度 3030 飞到 3535,它是顺时针飞行;

如果从 350350 飞到 1010,也是顺时针;

而从 350350 飞到 200200,是逆时针(因为走最短路);

没有两个位置会刚好相差 180180^\circ(对踵点),所以最短路径方向唯一。

FJ 的目标:

FJ 希望能完成一次环球旅行:

从他最好的朋友的农场出发;

经过若干个农场;

回到出发点;

整个旅程形成一个**“环绕地球”的闭环**。

为了判断是否真的绕了一圈,FJ 要求:

他旅途中顺时针方向总距离不能等于逆时针方向总距离。

他想知道,最少需要多少趟航班才能完成这样一次旅程?

输入格式

第 1 行:两个整数 NNMM1N5000, 1M250001 \leq N \leq 5000,\ 1 \leq M \leq 25000);

22N+1N+1 行:每行一个整数,表示第 ii 个农场的经度;

22 行是他最好的朋友的经度(出发地);

N+2N+2N+M+1N+M+1 行:每行两个整数 a, ba,\ b,表示农场 aabb 之间有双向航班。

输出格式

输出一个整数,表示最少航班次数;

如果无法完成这样的旅程,输出 -1。

3 3
0
120
240
1 2
2 3
1 3
3