#1343. 最短路

最短路

题目描述

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

输入格式

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

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

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

  • 1. 初始化x=y=z=0\red{x=y=z=0}
  • 2. 重复以下过程T\red 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\red{a}b\red{b}的,长度为1e8100a\red{1e8-100*a}的有向边。

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

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

输出格式

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

样例

输入样例

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

输出样例

2

提示

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