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