#CSES1667. 消息传递

消息传递

题目背景

翻译自 CSES-1667 题。

题目描述

Syrjälä 的网络中有 nn 台计算机和 mm 条连接。你的任务是判断 Uolevi 是否可以向 Maija 发送消息,如果可以,找出该消息传递路径上最少需要经过的计算机数量。

输入格式

第一行包含两个整数 nn 和 mm,分别表示计算机的数量和连接的数量。计算机编号为 1,2,…,n1,2,…,n,其中 Uolevi 的计算机编号为 11,Maija 的计算机编号为 nn。

接下来有 mm 行,每行包含两个整数 aa 和 bb,表示计算机 aa 和计算机 bb 之间有一条连接。

每条连接始终连接两个不同的计算机,且每两台计算机之间至多有一条连接。

输出格式

如果可以发送消息,首先输出一个整数 kk,表示有效路径上最少需要经过的计算机数量。接着输出一个示例路径,路径由计算机编号组成,表示消息从 Uolevi 的计算机传递到 Maija 的计算机的路径。

如果没有路径,输出 IMPOSSIBLE。

样例

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

说明/提示

2≤n≤1052 \le n \le 10^5;

1≤m≤2⋅1051\le m \le 2 \cdot 10^5;

1≤a,b≤n1\le a,b \le n。