#include #include #include #include using namespace std; int N,M; int dist[1010]; int ans[1010]; vector >G[1010]; main() { cin>>N>>M; vector > >E(M); for(int i=0;i>u>>v>>w; u--,v--; E[i]=make_pair(w,make_pair(u,v)); G[u].push_back(make_pair(v,1)); } sort(E.begin(),E.end()); for(int i=0;iP; P.push(0); while(!P.empty()) { int u=P.front();P.pop(); for(paire:G[u]) { int v=e.first; if(dist[v]>dist[u]+e.second) { dist[v]=dist[u]+e.second; P.push(v); } } } } for(pair >e:E) { G[e.second.first].push_back(make_pair(e.second.second,-1)); priority_queue >P; P.push(make_pair(-dist[e.second.first],e.second.first)); while(!P.empty()) { int u=P.top().second,cost=-P.top().first; P.pop(); if(dist[u]e:G[u]) { int v=e.first; int nxt=dist[u]+e.second; if(dist[v]>-N&&dist[v]>nxt) { dist[v]=nxt; P.push(make_pair(-nxt,v)); } } } for(int i=0;i