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

「BalticOI 2021 Day1」From Hacks to Snitches

题目描述

给定一个 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:没有一条边连接任意两个守卫的路径。