sum[i] 区间 i~fa[i]之和
//判断 l~r的和是否为s
//只要知道l-1和r是否在同一个集合内即可
//在同一个集合内:l~r=sum[r]-sum[l-1]
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <queue>
using namespace std;
typedef long long ll;
const int N=3e6+20;
int fa[N],sum[N];//sum[i] i~fa[i]的和
void init(int n)
{
for(int i=1;i<=n;i++)
{
fa[i]=i;
sum[i]=0;
}
}
int find(int x)
{
if(fa[x]!=x)
{
int t=fa[x];
fa[x]=find(fa[x]);
sum[x]+=sum[t];//
}
return fa[x];
}
int main()
{
int n,m;
while(cin>>n>>m)
{
init(n);
int ans=0;
while(m--)
{
int l,r,s;
cin>>l>>r>>s;
//判断 l~r的和是否为s
//只要知道l-1和r是否在同一个集合内即可
//在同一个集合内:sum[r] 根~r的距离 sum[l]根~l的距离 l~r=sum[r]-sum[l-1]
l--;
int fx=find(l);
int fy=find(r);
if(fx==fy)
{
if(sum[r]-sum[l]!=s)
{
ans++;
}
}
else
{
fa[fy]=fx;//下标下的为根(前缀和)
sum[fy]=sum[l]-(sum[r]-s);//画个图
}
}
cout<<ans<<endl;
}
return 0;
}