#1030. 01BFS

01BFS

问题描述

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

每条边的边权只有两种可能:00 或 11。

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

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

输入格式

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

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

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

输出格式

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

样例输入 1

3 3
1 2 0
2 3 1
1 3 1

样例输出 1

1

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

样例输入 2

4 3
1 2 0
2 3 0
1 4 1

样例输出 2

1

说明:路径 1→02→031 \xrightarrow{0} 2 \xrightarrow{0} 3 走不到 44;最短是 1→141 \xrightarrow{1} 4,长度 11。

样例输入 3

3 1
1 2 0

样例输出 3

-1

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

说明

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

评测数据规模

对于所有数据,保证 1≤n≤1001 \le n \le 100,0≤m≤50000 \le m \le 5000,每条边权 w∈{0,1}w \in \{0, 1\}。