// // Created by zeronosu77108 on Jan 15, 2021. // #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; struct aaa{aaa(){cin.tie(nullptr); ios::sync_with_stdio(false); cout<ostream &operator<<(ostream &o,const vector&v){o<<"{";for(int i=0;i<(int)v.size();i++)o<<(i>0?", ":"")<> n >> m; vector dist(n+1, vector(n+1, optional())); for (int i=0; i> s >> t >> d; dist[s][t] = d; } for (int i=1; i<=n; i++) dist[i][i] = 0; for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) { for (int k=1; k<=n; k++) { if (!dist[j][i] || !dist[i][k]) continue; if (dist[j][k]) dist[j][k] = min(dist[j][k].value(), dist[j][i].value() + dist[i][k].value()); else dist[j][k] = dist[j][i].value() + dist[i][k].value(); } } } for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) { for (int k=1; k<=n; k++) { if (!dist[j][i] || !dist[i][k]) continue; if (dist[j][k]) dist[j][k] = min(dist[j][k].value(), dist[j][i].value() + dist[i][k].value()); else dist[j][k] = dist[j][i].value() + dist[i][k].value(); } } } vector ans(n+1, 0); for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) { if (dist[i][j]) ans[i] += dist[i][j].value(); } } for (int i=1; i<=n; i++) { cout << ans[i] << endl; } }