最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • Snuke 的地铁旅行

    正文概述 陈老师   2026-01-20 15:14:41  

    题目描述

    Snuke 居住的城市有一套地铁系统,由 NN 个车站和 MM 条地铁线路组成。车站的编号为 11NN。每条线路都由某家公司运营,每家公司有一个公司编号。

    ii 条线路(1iM1 \le i \le M)双向连接车站 pip_iqiq_i。该线路没有中间站,其运营公司为 cic_i

    若一个车站有多条线路经过,则乘客可以在该站换乘。

    这个城市的计费方式比较奇怪:

    • 若乘客全程只使用同一家公司的线路,则费用为 11 日元。
    • 若乘客从公司 AA 的线路换乘到另一家公司的线路,则需要额外支付 11 日元。
    • 若乘客从公司 AA 换乘到公司 BB 后,又换回公司 AA,仍然需要再次支付额外的 11 日元。

    Snuke 现在位于车站 11,想要乘坐地铁到达车站 NN。请你求出到达车站 NN 所需支付的最少费用。

    输入格式

    输入从标准输入读入,格式如下:

    N M
    p_1 q_1 c_1
    ...
    p_M q_M c_M
    

    输出格式

    输出从车站 11 到车站 NN 所需支付的最小费用。

    如果无法通过地铁到达车站 NN,输出 1-1

    样例 1

    3 3
    1 2 1
    2 3 1
    3 1 2
    
    1
    

    使用公司 11 的线路:1231 \to 2 \to 3。费用为 11 日元。

    样例2

    8 11
    1 3 1
    1 4 2
    2 3 1
    2 5 1
    3 4 3
    3 6 3
    3 7 3
    4 8 4
    5 6 1
    6 7 5
    7 8 5
    
    2
    

    一种最优方式:

    • 先使用公司 11 的线路:132561 \to 3 \to 2 \to 5 \to 6
    • 再换乘到公司 55 的线路:6786 \to 7 \to 8

    总费用为 22 日元。

    样例 3

    2 0
    
    -1
    

    数据范围

    • 存在30%30\% 的数据,2n1000,0m1000 2 \le n \le 1000, 0 \le m \le 1000

    • 另外 30%30\% 的数据,1ci10001\le c_i \le 1000

    • 100%100\%的数据,2N1052 \le N \le 10^50M2×1050 \le M \le 2 \times 10^51pi,qiN1 \le p_i, q_i \le N1ci1061 \le c_i \le 10^6piqip_i \ne q_i

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » Snuke 的地铁旅行