1 #include<cstdio>
2 #include<cmath>
3 using namespace std;
4
5 const int maxn = 50005;
6 int f[maxn], rank[maxn];
7 int n, m;
8
9 void init(){
10 for (int i = 0; i <= n; ++i){
11 f[i] = i;
12 rank[i] = 0;
13 }
14 return;
15 }
16
17 int find(int x){
18 if (x == f[x])
19 return f[x];
20 int t = f[x];
21 f[x] = find(f[x]);
22 rank[x] += rank[t]; //把父辈的加起来
23 return f[x];
24 }
25
26 bool Union(int x, int y, int m){
27 int a = find(x);
28 int b = find(y);
29 if (a == b){
30 if (rank[x] + m != rank[y])
31 return false;
32 return true;
33 }
34 f[b] = a;
35 rank[b] = rank[x] + m - rank[y];
36 return true;
37 }
38
39 int main(){
40 int a, b, x;
41 while (~scanf("%d%d", &n, &m)){
42 init();
43 int cnt = 0;
44 for (int i = 0; i<m; ++i){
45 scanf("%d%d%d", &a, &b, &x);
46 if (!Union(a, b, x)){
47 cnt++;
48 }
49 }
50 printf("%d\n", cnt);
51 }
52 return 0;
53 }