#P8040. 最短路

最短路

题目描述

N N个点,M M条边的有向图,求点1 1到点N N的最短路(保证存在)。 1<=N<=10000001<=M<=10000000{1<=N<=1000000,1<=M<=10000000}

输入格式

第一行两个整数N NM M,表示点数和边数。

第二行六个整数T Trxa{rxa}rxc{rxc}rya{rya}ryc{ryc}rp{rp}

T T条边采用如下方式生成:

  • 1. 初始化x=y=z=0{x=y=z=0}
  • 2. 重复以下过程T T次:
    • x=(x*rxa+rxc)%rp;
    • y=(y*rya+ryc)%rp;
    • a=min(x%n+1,y%n+1);
    • b=max(y%n+1,y%n+1);
    • 则有一条从a{a}b{b}的,长度为1e8100a{1e8-100*a}的有向边。

后M-T条边采用读入方式: 接下来MT {M-T}行每行三个整数x{x},y{y},z{z},表示一条从x xy y长度为z z的有向边。

1<=x,y<=N0<z,rxa,rxc,rya,ryc,rp<231{1<=x,y<=N,0<z,rxa,rxc,rya,ryc,rp<2^{31} }

输出格式

一个整数,表示1N{1 \sim N}的最短路。

样例

输入样例

3 3
0 1 2 3 5 7
1 2 1
1 3 3
2 3 1

输出样例

2

提示

请采用高效的堆来优化Dijkstra算法。