#include #include using namespace std; struct muc{ int start; int nod; int cost; }; vector gr[250005]; int s[100005],viz[10005],sum[100005]; muc aux; int n,m; void dfs1(int x) { int i,j; viz[x]=1; for(i=0;i!=gr[x].size();i++) { if(sum[gr[x][i].nod]>sum[x]+gr[x][i].cost) { sum[gr[x][i].nod]=sum[x]+gr[x][i].cost; dfs1(gr[x][i].nod); } } viz[x]=0; } void dfs2(int x) { int i; s[x]=1; for(i=0;i!=gr[x].size();i++) { if(s[gr[x][i].start]!=1) dfs2(gr[x][i].start); } } int main() { int i,j,x,y,z; cin>>n>>m; for(i=1;i<=n;i++) { sum[i]=1000000000; cin>>x>>y>>z; aux.nod=y; aux.cost=z; aux.start=x; gr[x].push_back(aux); } for(i=1;i<=n;i++) dfs1(i); for(i=1;i<=n;i++) if(sum[i]<0); { s[i]=1; dfs2(i); } int k=0; for(i=1;i<=n;i++) if (s[i]==1) k++; cout<