#include <bits/stdc++.h>
#define ll long long
const int maxn
= 1e6+10;
using namespace std
;
int par
[maxn
];
int height
[maxn
];
int sum
[maxn
];
void init(){
for(int i
= 0; i
<= maxn
; i
++){
par
[i
] = i
;
height
[i
] = 0;
sum
[i
] = 0;
}
}
int Find(int x
){
if(x
!= par
[x
]){
int f
= par
[x
];
par
[x
] = Find(par
[x
]);
sum
[x
] += sum
[f
];
}
return par
[x
];
}
void merge_set(int a
, int b
,int val
){
int fa
= Find(a
);
int fb
= Find(b
);
if (height
[fa
] == height
[fb
]) {
height
[fa
] = height
[fa
] + 1;
par
[fb
] = fa
;
sum
[fb
] = -sum
[b
] + sum
[a
] -val
;
}
else{
if (height
[fa
] < height
[fb
]) par
[fa
] = fb
,sum
[fa
] = -sum
[a
] + sum
[b
] +val
;
else par
[fb
] = fa
,sum
[fb
] = -sum
[b
] + sum
[a
] -val
;
}
}
int main()
{
int n
,m
;
int ans
;
while(~scanf("%d%d",&n
,&m
))
{
ans
= 0;
init();
int a
,b
,val
;
for(int i
= 0;i
< m
;i
++)
{
scanf("%d%d%d",&a
,&b
,&val
);
a
--;
int fa
= Find(a
);
int fb
= Find(b
);
if(fa
!= fb
)
{
merge_set(a
,b
,val
);
}
else{
if(sum
[a
] - sum
[b
] != val
)ans
++;
}
}
cout
<<ans
<<endl
;
}
return 0;
}
转载请注明原文地址: https://lol.8miu.com/read-25419.html