[CQOI2016]不同的最小割
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

学过图论的同学都知道最小割的概念:对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中,则称这个划分是关于s,t的割。对于带权图来说,将所有顶点处在不同部分的边的权值相加所得到的值定义为这个割的容量,而s,t的最小割指的是在关于s,t的割中容量最小的割。
而对冲刺NOI竞赛的选手而言,求带权图中两点的最小割已经不是什么难事了。我们可以把视野放宽,考虑有N个点的无向连通图中所有点对的最小割的容量,共能得到N(N−1) 2个数值。 这些数值中互不相同的有多少个呢?这似乎是个有趣的问题。

输入描述:

输入文件第一行包含两个数N,M,表示点数和边数。
接下来M行,每行三个数u,v,w,表示点u和点v(从1开始标号)之间有条边权值是w。
1 ≤ N ≤ 850,1 ≤ M ≤ 8500,1 ≤ W ≤ 100000

输出描述:

输出文件第一行为一个整数,表示个数。
示例1

输入

复制
4 4
1 2 3
1 3 6
2 4 5
3 4 4

输出

复制
3