// P6464 传送门。原图 Floyd 一次,独立枚举一对零边。 #include using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; if (!(cin >> n >> m)) return 0; const ll INF = 1LL << 60; vector> d(n, vector(n, INF)); for (int i = 0; i < n; ++i) d[i][i] = 0; for (int e = 0, u, v; e < m; ++e) { ll w; cin >> u >> v >> w; --u; --v; d[u][v] = d[v][u] = min(d[u][v], w); } for (int k = 0; k < n; ++k) for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) if (d[i][k] != INF && d[k][j] != INF) d[i][j] = min(d[i][j], d[i][k]+d[k][j]); ll ans = 0; for (int i = 0; i < n; ++i) for (int j = i+1; j < n; ++j) ans += d[i][j]; for (int u = 0; u < n; ++u) for (int v = u+1; v < n; ++v) { ll sum = 0; for (int i = 0; i < n; ++i) for (int j = i+1; j < n; ++j) sum += min({d[i][j], d[i][u]+d[v][j], d[i][v]+d[u][j]}); ans = min(ans, sum); } cout << ans << '\n'; }