P8124 [BalticOI 2021] From Hacks to Snitches (Day1)

题目描述

给定一个 $N$ 个点 $M$ 条边的无向图,有 $K$ 个守卫第 $i$ 个守卫会经过 $\ell_i$ 个节点,这 $\ell_i$ 个节点分别为 $v_1,v_2,\cdots,v_{\ell_i}$,运行机制为守卫刚开始位于第 $v_1$ 个节点,设其为第 $0$ 分钟,$1$ 分钟时从第 $v_1$ 个节点走到第 $v_2$ 个节点,$2$ 分钟时从第 $v_2$ 个节点走到第 $v_3$ 个节点,……,$\ell_i-1$ 分钟时从第 $v_{\ell_i-1}$ 个节点走到第 $v_{\ell_i}$ 个节点,$\ell_i$ 分钟时从第 $v_{\ell_i}$ 个节点走到第 $v_1$ 个节点,以此类推,无限循环。 您是一个小偷,您要从第 $1$ 个节点到达第 $N$ 个节点,即 $0$ 分钟时您位于 $1$ 号节点,您可以一个节点直接到另一个节点,但是要经过这两个节点之间的路径,您要保证这条路径上没有一个节点上有守卫,且守卫也不经过这些组成路径的边。您经过每一条边的时间都是一分钟。保证任意两个守卫的路径不相交,并且起点和终点均不在任意守卫的路径上。 您想知道不被守卫发现的情况下需要最短多少分钟或者提出无解。

输入格式

第一行两个整数 $N,M$ 代表点数和边数。 接下来 $M$ 行每行两个整数 $u,v$ 代表一条边。 第 $M+2$ 行一个整数 $K$ 代表守卫个数。 接下来 $K$ 行首先一个整数 $\ell_i$ 代表守卫的路径长度,接下来 $\ell_i$ 个整数 $v_1,v_2,\cdots,v_{\ell_i}$ 描述路径。

输出格式

一行一个整数代表最少需要多少分钟或者无解时输出 `impossible`。

说明/提示

#### 样例 1 解释 第 $1$ 个守卫的路径如下: ![](https://cdn.luogu.com.cn/upload/image_hosting/0p8adii9.png) 一种可行方式是: - $0$ 分钟时,开始在节点 $1$; - $1$ 分钟时,在节点 $1$ 等待; - $2$ 分钟时,移动到节点 $2$; - $3$ 分钟时,移动到节点 $5$; - $4$ 分钟时,移动到节点 $6$。 #### 样例 2 解释 图和路径与样例 1 一样,只是起点和终点不同。 一种可行方式是,没有等待,直接按照 $1 \to 2 \to 3 \to 4 \to 5 \to 6$ 走。 #### 数据规模与约定 **本题采用捆绑测试。** - Subtask 1(5 pts):$N,M \le 10^5$,$K=1$,$ ℓ_1 \le 125$。 - Subtask 2(10 pts):$N,M \le 10^5$,$\sum ℓ_i \le 125$,满足性质 A。 - Subtask 3(10 pts):$ ℓ_i \le 200$,$\sum ℓ_i \le 350$,满足性质 A。 - Subtask 4(10 pts):满足性质 A。 - Subtask 5(25 pts):$\sum ℓ_i \le 125$。 - Subtask 6(20 pts):$ ℓ_i \le 200$,$\sum ℓ_i \le 350$。 - Subtask 7(20 pts):无特殊限制。 - Subtask Ex(0 pts):Extra Subtask。 对于 $100\%$ 的数据,$1 \le N \le 2.5 \times 10^5$,$1 \le M \le 3 \times 10^6$,$3 \le ℓ_i \le 1500$,$\sum ℓ_i \le 2750$。 性质 A 为没有一条边连接任意两个守卫的路径。 #### 说明 翻译自 [BalticOI 2021 Day1 C From Hacks to Snitches](https://boi.cses.fi/files/boi2021_day1.pdf)。