P0587

[JSOI2008]最小生成树计数

[JSOI2008]最小生成树计数

现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树(如果两棵最小生成树中至少有一条边不同,则这两棵最小生成树就是不同的)。

由于不同的最小生成树可能很多,所以你只需要输出方案数对 3101131011 取模的结果。

输入格式

第一行包含两个整数 nn 和 mm,表示该无向图的节点数和边数。每个节点用 1∼n1\sim n 的整数编号。

接下来的 mm 行,每行包含三个整数 a,b,ca, b, c,表示节点 a,ba, b 之间的边的权值为 cc。

输出格式

输出一行一个整数,表示不同的最小生成树的个数对 3101131011 取模的结果。

样例输入

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

样例输出

8

数据范围

对于所有测试数据:

  • 1≤n≤1001\le n\le 100,1≤m≤10001\le m\le 1000;
  • 1≤c≤1091\le c\le 10^9;
  • 数据保证不会出现自环和重边;
  • 具有相同权值的边不会超过 1010 条。

来源与许可

本题为 JSOI 2008 试题「最小生成树计数」,题面与测试数据整理自 BZOJ 1016。

样例 1

输入

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

输出

8