20200709 T3 城堡

题目描述

给定一张 \(N\) 个点 \(M\) 条边的无向连通图,每条边有边权。我们需要从 \(M\) 条边中选出 \(N − 1\) 条, 构成一棵树。 记原图中从 \(1\) 号点到每个节点的最短路径长度为 \(D_i\) ,树中从 \(1\) 号点到每个节点的最短路径长度为 \(S_i\) ,构出的树应当满足对于任意节点 \(i\),都有 \(D_i = S_i\)

请你求出选出 \(N − 1\) 条边的方案数。

输入格式

输入的第一行包含两个整数 \(N\)\(M\)

接下来 \(M\) 行,每行包含三个整数 \(u、v\)\(w\),描述一条连接节点 \(u\)\(v\) 且边权为 \(w\) 的边。

输出格式

输出一行,包含一个整数,代表方案数对 \(2 ^ {31} − 1\) 取模得到的结果。

样例

1.in

3 3
1 2 2
1 3 1
2 3 1

1.out

2

数据范围与约定

对于 \(30 \%\) 的数据,\(2 \leq N \leq 5,M \leq 10\)

对于 \(50\%\) 的数据,满足条件的方案数不超过 \(10000\)

对于 \(100\%\) 的数据,\(2 \leq N \leq 1000, N - 1 \leq M \leq \frac{N(N - 1)}{2},1 \leq w \leq 100\)

题解

Code

posted @ 2020-07-10 08:00  yu__xuan  阅读(118)  评论(0编辑  收藏  举报