#include using namespace std; #define int long long typedef pair P; int INF = 3e18+7; int mod = 1e9+7; int dx[] = {1, 0,-1, 0, 1, 1,-1,-1}; int dy[] = {0, 1, 0,-1, 1,-1, 1,-1}; signed main() { int N,M; cin >> N >> M; vector>road(N); for(int i = 0; i < M; i++) { int s,t,d; cin >> s >> t >> d; s--;t--; road[s].push_back({t,d}); } for(int i = 0; i < N; i++) { vectordist(N,INF); dist[i] = 0; priority_queue,greater

>que; que.push({0,i}); while (!que.empty()) { P x = que.top(); que.pop(); if(x.first > dist[x.second]) { continue; } for(int j = 0; j < road[x.second].size(); j++) { if(dist[road[x.second][j].first] > x.first+road[x.second][j].second) { dist[road[x.second][j].first] = x.first+road[x.second][j].second; que.push({dist[road[x.second][j].first],road[x.second][j].first}); } } } int ans = 0; for(int i = 0; i < N; i++) { if(dist[i] == INF) { continue; } ans += dist[i]; } cout << ans << endl; } }