#P16548. [Bapc2025]Homesick

[Bapc2025]Homesick

题目背景

公元前 225 年 8 月 25 日,你负责组织罗马“厌恶回头散步俱乐部”的年度公路旅行。

然而你很容易想家,因此希望旅行尽可能短。按照传统,队伍不能刚走过一条道路,就立刻沿同一条道路原路返回。

题目描述

给定一个无向简单图,顶点表示景点,道路表示无向边。

你需要规划一条旅行路线,满足:

  • 从顶点 11 出发;
  • 最终回到顶点 11
  • 至少访问一个其他顶点;
  • 若某一步从 xx 走到 yy,下一步不能立刻从 yy 沿同一条边回到 xx

允许在路线中多次经过同一顶点或同一条道路,只要没有发生上述“立即原路返回”。

求经过道路数量最少的合法路线。

样例 2 中一条使用 6 条道路的合法路线,其中道路 1-4 被使用两次

输入格式

第一行包含两个整数 n,mn,m

2n105,1m2105,2\le n\le 10^5,\qquad 1\le m\le 2\cdot 10^5,

分别表示景点数量和道路数量。

接下来 mm 行,每行包含两个整数 u,vu,v1u<vn1\le u<v\le n),表示 uuvv 之间有一条双向道路。

任意一对景点之间至多有一条道路。

输出格式

若不存在合法路线,输出:

impossible

否则,先输出一个整数 kk,表示路线中依次访问的顶点数量,起点和终点的顶点 11 均计入其中。

随后输出 kk 个顶点编号,表示访问顺序。

因此路线实际经过的道路数量为 k1k-1

若存在多条最短合法路线,输出任意一条。

样例 1

输入

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

输出

4
1 3 2 1

样例 2

输入

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

输出

7
1 4 5 6 7 4 1

样例 3

输入

3 2
1 2
2 3

输出

impossible

样例 4

输入

4 3
2 3
3 4
2 4

输出

impossible