#include #define MAXN 200010 int f[MAXN],r[MAXN]; int find(int x) { if(x==f[x]) return f[x]; int t=find(f[x]); r[x]=r[x]+r[f[x]]; f[x]=t; return f[x]; } int fun(int x,int y) { if(x>y) return x-y; else y-x; } int Union(int x,int y,int sum) { int a=find(x); int b=find(y); if(a==b) { if(fun(r[x],r[y])==sum) return 0; else return 1; } else { f[a]=b; r[a]=r[y]+sum-r[x]; return 0; } } int main() { int n,m,i,ans,a,b,s; while(scanf("%d %d",&n,&m)!=EOF) { ans=0; for(i=0;i<=n;i++) { f[i]=i; r[i]=0; } for(i=1;i<=m;i++) { scanf("%d %d %d",&a,&b,&s); a--; if(Union(a,b,s)) ans++; } printf("%d\n",ans); } return 0; }