#include <cstdio>
#include <algorithm>
using namespace std;
const int N=200010;
int n,m;
int pre[N],value[N];//value[]表示改点到其更节点的距离,对value含义的理解
int find(int x)
{
if(x!=pre[x])
{
int t=pre[x];
pre[x]=find(pre[x]);
value[x]+=value[t];
}
return pre[x];
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int ans=0;
for(int i=0;i<=n;i++)//从1开始,WA
{
pre[i]=i;
value[i]=0;
}
int a,b,c;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
int u=find(a-1);//为对区间进行处理,WA
int v=find(b);
if(u==v)
{
if(value[a-1]-value[b]!=c)//相减的顺序反了,WA
ans++;
}
else
{
pre[u]=v;
value[u]=-value[a-1]+value[b]+c;
}
}
printf("%d\n",ans);
}
return 0;
}