编程题
### 问题描述 小齐在当地大学上了一个晚上的算法课程,学到了最小生成树的知识。然而,小齐发现他的农场设计不够高效,想要简化农场的布局。 农场当前被安排成一个图,其中顶点表示田地,边表示这些田地之间的路径,每条路径都有一个关联的长度。小齐注意到,对于每个不同的长度,他的农场上最多有三条路径共享这个长度。小齐想要删除一些路径,使得农场变成一棵树——即任意两个田地之间只有一条唯一的路径。此外,小齐希望这棵树是最小生成树——具有边长度和最小可能总和的树。 帮助小齐计算出从他的农场图派生的最小生成树的边长度总和,以及他可以创建的不同最小生成树的数量。 ### 输入格式 - 第 $1$ 行: 两个整数 $N$ 和 $M$($1 \leq N \leq 40,000$; $1 \leq M \leq 100,000$),表示农场图中的顶点和边的数量。顶点编号为 $1$ 到 $N$。 - 接下来的 $M$ 行:每行包含三个整数 $a_i, b_i$ 和 $n_i$($1 \leq a_i, b_i \leq N$; $1 \leq n_i \leq 1,000,000$),表示从顶点 $a_i$ 到 $b_i$ 的一条边,长度为 $n_i$。每个边的长度 $n_i$ 不会出现超过三次。 ### 输出格式 - 第 $1$ 行: 两个整数,表示最小生成树的边长度总和和最小生成树的数量(对 $1,000,000,007$ 取模)。 ### 样例输入 ``` 4 5 1 2 1 3 4 1 1 3 2 1 4 2 2 3 2 ``` ### 样例输出 ``` 4 3 ``` ### 评测数据规模 $1 \leq N \leq 40,000$,$1 \leq M \leq 100,000$。
查看答案
赣ICP备20007335号-2