CF242C King's Path

题目描述

有一个国王站在一个 $10^9 \times 10^9$ 的国际象棋棋盘上。 规定第 $i$ 行第 $j$ 列的位置表示为 $(i, j)$。 在给定的国际象棋棋盘上有一些格子是允许通过的。 国际象棋棋盘的所有允许通过的格子都以下面所述的形式的形式给出。 一共 $n$ 段,每段用三个整数 $r_i, a_i, b_i\ (a _ i \le b _ i)$ 表示,意思是在 $r_i$ 行中第 $a_i$ 个格子到第 $b_i$ 个格子是允许通过的。 国王可以移动到与它相邻的任意一个格子里(只能走一步)。 如果两个格子有至少一个公用的点,那么就认为他们是相邻的。 求出国王从 $(x _ 0, y _ 0)$ 移动至 $(x _ 1, y _ 1)$ 的最少步数。

输入格式

第一行包含四个由空格分隔的整数 $x_0,y_0,x_1,y_1$,表示国王的初始和最终位置。 第二行包含一个整数 $n$,表示有 $n$ 段可以通过的格子。 接下来的 $n$ 行则是这 $n$ 个部分中可通行的格子的描述(包含三个由空格隔开的整数 $r_i$,$a_i$,$b_i$)。

输出格式

如果在初始位置和最终位置之间没有路径,输出 $-1$。 否则输出一个整数:国王从初始位置到最终位置所需的最小移动次数。

说明/提示

$1 \le x_0, y_0, x_1, y_1 \le 10^9$ $1\le n \le 10^5$ $1 \le r_i, a_i, b_i \le 10^9$ $a_i \le b_i$ 保证国王的初始和最终位置是允许通过的格子。 保证国王的初始和最终位置不一致。 保证所有给定部分的总长度不超过 $10^5$ 。