#L3560. 「BalticOI 2021 Day1」From Hacks to Snitches

「BalticOI 2021 Day1」From Hacks to Snitches

题目描述

题目译自 BalticOI 2021 Day1「From Hacks to Snitches」,译者 Shuchong。

给定一个 NN 个点 MM 条边的无向图,有 KK 个守卫。第 ii 个守卫会经过 i\ell_i 个节点,这 i\ell_i 个节点分别为 v1,v2,,viv_1, v_2, \cdots, v_{\ell_i}。运行机制为:守卫刚开始位于第 v1v_1 个节点,设其为第 00 分钟,11 分钟时从第 v1v_1 个节点走到第 v2v_2 个节点,22 分钟时从第 v2v_2 个节点走到第 v3v_3 个节点,……,i1\ell_i-1 分钟时从第 vi1v_{\ell_i-1} 个节点走到第 viv_{\ell_i} 个节点,i\ell_i 分钟时从第 viv_{\ell_i} 个节点走到第 v1v_1 个节点,以此类推,无限循环。

您是一个小偷,您要从第 11 个节点到达第 NN 个节点,即 00 分钟时您位于 11 号节点。您可以从一个节点直接到另一个节点,但是要经过这两个节点之间的路径,您要保证这条路径上没有一个节点上有守卫,且守卫也不经过这些组成路径的边。您经过每一条边的时间都是一分钟。保证任意两个守卫的路径不相交,并且起点和终点均不在任意守卫的路径上。

您想知道不被守卫发现的情况下需要最短多少分钟或者提出无解。

输入格式

第一行两个整数 N,MN, M 代表点数和边数。

接下来 MM 行每行两个整数 u,vu, v 代表一条边。

M+2M+2 行一个整数 KK 代表守卫个数。

接下来 KK 行首先一个整数 i\ell_i 代表守卫的路径长度,接下来 i\ell_i 个整数 v1,v2,,viv_1, v_2, \cdots, v_{\ell_i} 描述路径。

输出格式

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

样例 1

输入

6 6
1 2
2 3
3 4
4 5
5 2
5 6
1
4 3 2 5 4

输出

4

11 个守卫的路径如下:

一种可行方式是:

  • 00 分钟时,开始在节点 11
  • 11 分钟时,在节点 11 等待;
  • 22 分钟时,移动到节点 22
  • 33 分钟时,移动到节点 55
  • 44 分钟时,移动到节点 66

样例 2

输入

6 6
1 2
2 3
3 4
4 5
5 2
5 6
1
4 4 5 2 3

输出

5

图和路径与样例 11 一样,只是起点和终点不同。

一种可行方式是,没有等待,直接按照 1234561 \to 2 \to 3 \to 4 \to 5 \to 6 走。

样例 3

输入

11 13
1 2
2 3
3 4
4 2
3 5
5 6
6 7
7 5
6 8
8 9
9 10
10 8
9 11
3
3 4 2 3
3 7 6 5
3 10 8 9

输出

impossible

数据范围与提示

对于 100%100\% 的数据:

  • 1N2.5×1051 \le N \le 2.5 \times 10^5
  • 1M3×1061 \le M \le 3 \times 10^6
  • 3i15003 \le \ell_i \le 1500
  • i2750\sum \ell_i \le 2750

子任务

  • Subtask 155 分):N,M105N, M \le 10^5K=1K = 11125\ell_1 \le 125
  • Subtask 21010 分):N,M105N, M \le 10^5i125\sum \ell_i \le 125,满足性质 A
  • Subtask 31010 分):i200\ell_i \le 200i350\sum \ell_i \le 350,满足性质 A
  • Subtask 41010 分):满足性质 A
  • Subtask 52525 分):i125\sum \ell_i \le 125
  • Subtask 62020 分):i200\ell_i \le 200i350\sum \ell_i \le 350
  • Subtask 72020 分):无特殊限制

性质 A:没有一条边连接任意两个守卫的路径。