#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;
}