CF331E2 Deja Vu

题目描述

众所周知,我们已经在“矩阵”中生活了很长时间。而在新的第七代“矩阵”中,世界由海狸统治。 让我们来看看海狸 Neo。Neo 会有所谓的“既视感”爆发,他会看到自己曾经去过或将要去的某些地方发生的事件。让我们更详细地研究一下这种现象。 我们可以认为 Neo 所在的城市由一个有向图表示,包含 $n$ 个商店和 $m$ 条连接商店的街道。没有两条街道连接同一对商店(此外,不存在一条从 A 到 B 和一条从 B 到 A 的街道)。没有街道连接同一个商店本身。当 Neo 经过某些街道时,他会产生幻觉。无论他经过第 $k$ 条街道多少次,每次他都会以相同的顺序看到相同的幻觉。一次幻觉是一个商店序列。 我们知道,如果 Neo 从某个商店 $a$ 走到某个商店 $b$($a$ 和 $b$ 可以相同),且现实中经过的商店序列与幻觉中的商店序列完全一致,他会感到非常震惊。 请为海狸 Neo 提供一条非零长度的满足上述条件的路径。或者,你甚至可以统计所有满足条件的路径数量,对 $1000000007$ 取模吗?

输入格式

第一行包含整数 $n$ 和 $m$,分别表示商店数和街道数,$1 \leq n \leq 50$,$1 \leq m \leq n(n-1)$。接下来的 $m$ 行,每行描述一条街道,格式如下:$x_i$ $y_i$ $k_i$ $v_1$ $v_2$ ... $v_k$,其中 $x_i$ 和 $y_i$($1 \leq x_i, y_i \leq n, x_i \neq y_i$)是街道连接的两个商店编号,$k_i$($0 \leq k_i \leq n$)表示从 $x_i$ 到 $y_i$ 的路上有多少个幻觉;$v_1, v_2, ..., v_k$($1 \leq v_j \leq n$)描述了幻觉中看到的商店编号,顺序很重要。 保证所有街道上的幻觉总数不超过 $10^5$。 - 若要获得 50 分,你需要找到一条长度不超过 $2n$ 的(不一定简单的)满足上述条件的路径(子任务 E1); - 若要再获得 50 分,你需要统计每个长度从 $1$ 到 $2n$ 的满足条件的路径数量(子任务 E2)。

输出格式

子任务 E1:第一行输出一个整数 $k$($1 \leq k \leq 2n$),表示 Neo 路径上经过的商店数。第二行输出 $k$ 个整数,依次表示 Neo 经过的商店编号。如果不存在这样的路径,或者最短路径长度超过 $2n$,则输出一行 $0$。 子任务 E2:输出 $2n$ 行。第 $i$ 行输出一个整数,表示长度为 $i$ 的满足条件的路径数量,对 $1000000007$ 取模。

说明/提示

两个样例的输入相同。第一个样例是第一个子任务的答案,第二个样例是第二个子任务的答案。 由 ChatGPT 4.1 翻译