题目描述
又到了举办夏日祭典的时候啦!这次祭典有 $n$ 个摊位参加,有 $m$ 条无向道路连接着摊位。
每个摊位在最开始就规定了编号。第 $i$ 个摊位编号为 $p_i$ ,其中保证 $p_1,p_2,\cdots,p_n$ 是一个 $1$ 到 $n$ 的排列。
祭典入口在第 $A$ 个摊位 ,出口在第 $B$ 个摊位($A\not=B$)。定义一个观赏路线是完美的当且仅当存在一条从 $A$ 开始,到 $B$ 结束的路径,满足路径上摊位的编号严格递增。
有些游客可能有一个自己必须去的摊位 $c$。由于游客数量足够多,所以你可以视作每个摊位 $c$ ,一定存在某位游客满足 $c$ 对于这位游客是必须去的。
为了让所有游客最终都能有至少一条完美观赏路径,且这条路径包含自己必须去的摊位 $c$ ,yoimiya 打算为各个摊位重新标号。
每次操作可以选择一条从 $A$ 开始的简单路径,然后把它们的编号循环左移一位。具体来说,如果 yoimiya 选择的路径是 $x_0(=A),x_1,\cdots,x_{k-1}$,设 $y_i=p_{x_i}$($0\le i\le k-1$),操作完之后,所有 $p_{x_i}$ 会同时变成 $y_{(i+1)\bmod\ k}$。
夏日祭就快开始了,所以 yoimiya 只能进行至多 $999$ 次操作,聪明的你,请帮帮她!
输入格式
第一行四个整数 $n,m,A,B$ 。
第二行 $n$ 个数 $p_i$ 表示摊位标号。
接下来 $m$ 行,每行两个整数 $u_i,v_i$ 表示图中一条边。
输出格式
如果不能通过操作满足条件,输出 -1
,否则在第一行输出一个整数 $op(0\leq op\leq 999)$ ,表示操作次数。
然后接下来 $op$ 行,每行先输出一个整数 $k$ 表示路径顶点数,然后输出 $k$ 个整数 $x_0=A,x_1,...,x_{k-1}$ 。这些 $x_i$ 应该互不相同且在图中形成一条简单路径。
可以证明,有解,则存在一个不超过 $999$ 次操作的方案。
若有多种方案,输出任意一种即可。
样例
样例 1 输入
5 6 1 2
1 2 3 4 5
1 3
2 3
1 4
2 4
1 5
3 5
样例 1 输出
7
4 1 3 2 4
3 1 3 2
3 1 3 5
4 1 3 2 4
3 1 3 2
2 1 3
1 1
样例 2 输入
4 3 1 2
1 4 2 3
1 4
2 4
3 4
样例 2 输出
-1
数据范围
保证对于所有数据:$2\le n\le 1000,1\le m\le 2000,1\le A,B\le n,A\neq B$,保证无重边无自环。
子任务编号 | 特殊限制 | 分值 |
---|---|---|
$1$ | $n\leq 10$ | $10$ |
$2$ | $n\leq 100,m\leq 200$ 且保证除了 $A,B$ 两点,其余点度数均为 $2$ 。 | $15$ |
$3$ | $n\leq 100,m\leq 200$ | $25$ |
$4$ | 保证除了 $A,B$ 两点,其余点度数均为 $2$ 。 | $15$ |
$5$ | 无特殊限制 | $35 $ |