loj#P3560. 「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ℓ_i 个节点,这 iℓ_i 个节点分别为 v1,v2,,viv_1,v_2,\cdots,v_{ℓ_i},运行机制为守卫刚开始位于第 v1v_1 个节点,设其为第 00 分钟,11 分钟时从第 v1v_1 个节点走到第 v2v_2 个节点,22 分钟时从第 v2v_2 个节点走到第 v3v_3 个节点,……,i1ℓ_i-1 分钟时从第 vi1v_{ℓ_i-1} 个节点走到第 viv_{ℓ_i} 个节点,iℓ_i 分钟时从第 viv_{ℓ_i} 个节点走到第 v1v_1 个节点,以此类推,无限循环。

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

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

输入格式

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

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

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

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

输出格式

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

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

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

5
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^51M3×1061 \le M \le 3 \times 10^63i15003 \le ℓ_i \le 1500i2750\sum ℓ_i \le 2750

  • Subtask 1(5 pts):N,M105N,M \le 10^5K=1K=11125 ℓ_1 \le 125
  • Subtask 2(10 pts):N,M105N,M \le 10^5i125\sum ℓ_i \le 125,满足性质 A。
  • Subtask 3(10 pts):i200 ℓ_i \le 200i350\sum ℓ_i \le 350,满足性质 A。
  • Subtask 4(10 pts):满足性质 A。
  • Subtask 5(25 pts):i125\sum ℓ_i \le 125
  • Subtask 6(20 pts):i200 ℓ_i \le 200i350\sum ℓ_i \le 350
  • Subtask 7(20 pts):无特殊限制。

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