地铁
题号:NC52805
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
Special Judge, 64bit IO Format: %lld

题目描述

Bobo 居住在大城市 ICPCCamp。
ICPCCamp 有 n 个地铁站,用 编号。
m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 c_i 号线,位于站 a_i, b_i 之间,往返均需要花费 t_i 分钟(即从 a_ib_i 需要 t_i 分钟,从 b_ia_i 也需要 t_i 分钟)。
众所周知,换乘线路很麻烦。如果乘坐第 i 段地铁来到地铁站 s,又乘坐第 j 段地铁离开地铁站 s,那么需要额外花费 分钟。注意,换乘只能在地铁站内进行。
Bobo 想知道从地铁站 1 到地铁站 n 所需要花费的最小时间。

输入描述:

输入包含不超过 20 组数据。
每组数据的第一行包含两个整数 n, m ().
接下来 m 行的第 i 行包含四个整数 a_i, b_i, c_i, t_i ().
保证存在从地铁站 1 到 n 的地铁线路(不一定直达)。

输出描述:

对于每组数据,输出一个整数表示要求的值。
示例1

输入

复制
3 3
1 2 1 1
2 3 2 1
1 3 1 1

输出

复制
1
示例2

输入

复制
3 3
1 2 1 1
2 3 2 1
1 3 1 10

输出

复制
3
示例3

输入

复制
3 2
1 2 1 1
2 3 1 1

输出

复制
2