#1030. 01BFS

01BFS

问题描述

给定一张 nn 个点、mm 条无向边 的简单图,点的编号从 11nn

每条边的边权只有两种可能:0011

请你求出从 11 号点到 nn 号点 的最短路径长度(即路径上所有边权之和的最小值)。

如果 11 号点无论如何也无法到达 nn 号点,请输出 1-1

输入格式

第一行包含两个整数 nnmm,表示点数和边数。

接下来 mm 行,每行包含三个整数 u, v, wu,\ v,\ w,表示一条连接 uuvv 的无向边,权重 w{0,1}w \in \{0, 1\}

数据保证没有重边和自环(即 uvu \ne v,同一对点之间最多一条边)。

输出格式

一个整数,表示 11 号点到 nn 号点的最短路径长度;若不可达,输出 1-1

样例输入 1

3 3
1 2 0
2 3 1
1 3 1

样例输出 1

1

说明:路径 102131 \xrightarrow{0} 2 \xrightarrow{1} 3,总长度 11;直接走 1131 \xrightarrow{1} 3 也是 11,二者等价。

样例输入 2

4 3
1 2 0
2 3 0
1 4 1

样例输出 2

1

说明:路径 102031 \xrightarrow{0} 2 \xrightarrow{0} 3 走不到 44;最短是 1141 \xrightarrow{1} 4,长度 11

样例输入 3

3 1
1 2 0

样例输出 3

-1

说明33 号点根本进不来任何边,与 11 号点不连通。

说明

  • 答案可能为 00(例如存在一条全部由 00 边组成的路径)。
  • n=1n = 1 时答案为 00(已经在终点)。
  • 11nn 不连通,输出 1-1

评测数据规模

对于所有数据,保证 1n1001 \le n \le 1000m50000 \le m \le 5000,每条边权 w{0,1}w \in \{0, 1\}