The Classic Problem

题意翻译

给定一张 $n$ 个点,$m$ 条边的无向图,每条边的边权为 $2^{x_i}$,求 $s$ 到 $t$ 的最短路,结果对 $10^9+7$ 取模。 $n, m, x \leq 10^5$。

题目描述

You are given a weighted undirected graph on $ n $ vertices and $ m $ edges. Find the shortest path from vertex $ s $ to vertex $ t $ or else state that such path doesn't exist.

输入输出格式

输入格式


The first line of the input contains two space-separated integers — $ n $ and $ m $ ( $ 1<=n<=10^{5} $ ; $ 0<=m<=10^{5} $ ). Next $ m $ lines contain the description of the graph edges. The $ i $ -th line contains three space-separated integers — $ u_{i} $ , $ v_{i} $ , $ x_{i} $ ( $ 1<=u_{i},v_{i}<=n $ ; $ 0<=x_{i}<=10^{5} $ ). That means that vertices with numbers $ u_{i} $ and $ v_{i} $ are connected by edge of length $ 2^{x_{i}} $ (2 to the power of $ x_{i} $ ). The last line contains two space-separated integers — the numbers of vertices $ s $ and $ t $ . The vertices are numbered from $ 1 $ to $ n $ . The graph contains no multiple edges and self-loops.

输出格式


In the first line print the remainder after dividing the length of the shortest path by $ 1000000007 (10^{9}+7) $ if the path exists, and -1 if the path doesn't exist. If the path exists print in the second line integer $ k $ — the number of vertices in the shortest path from vertex $ s $ to vertex $ t $ ; in the third line print $ k $ space-separated integers — the vertices of the shortest path in the visiting order. The first vertex should be vertex $ s $ , the last vertex should be vertex $ t $ . If there are multiple shortest paths, print any of them.

输入输出样例

输入样例 #1

4 4
1 4 2
1 2 0
2 3 0
3 4 0
1 4

输出样例 #1

3
4
1 2 3 4 

输入样例 #2

4 3
1 2 4
2 3 5
3 4 6
1 4

输出样例 #2

112
4
1 2 3 4 

输入样例 #3

4 2
1 2 0
3 4 1
1 4

输出样例 #3

-1

说明

A path from vertex $ s $ to vertex $ t $ is a sequence $ v_{0} $ , ..., $ v_{k} $ , such that $ v_{0}=s $ , $ v_{k}=t $ , and for any $ i $ from 0 to $ k-1 $ vertices $ v_{i} $ and $ v_{i+1} $ are connected by an edge. The length of the path is the sum of weights of edges between $ v_{i} $ and $ v_{i+1} $ for all $ i $ from 0 to $ k-1 $ . The shortest path from $ s $ to $ t $ is the path which length is minimum among all possible paths from $ s $ to $ t $ .