func_code_string: #include <bits/stdc++.h>   using namespace std;   int x, y, z, inf = 1e9, f[210][210], n, m, Max[210];   pair<pair<int, int>, int> p[40010];   pair<int, int> q[210];   void read(int &x) {     char ch = getchar();     int mark = 1;     for (; ch !=  -  && (ch <  0  || ch >  9 ); ch = getchar())       ;     if (ch ==  - ) mark = -1, ch = getchar();     for (x = 0; ch >=  0  && ch <=  9 ; ch = getchar()) x = x * 10 + ch - 48;     x *= mark;   }   int main() {     read(n);     read(m);     for (int i = 1; i <= n; i++)       for (int j = i + 1; j <= n; j++) f[i][j] = f[j][i] = inf;     for (int i = 1; i <= m; i++) {       read(x);       read(y);       read(z);       f[x][y] = f[y][x] = z;       p[i] = make_pair(make_pair(x, y), z);     }     for (int k = 1; k <= n; k++)       for (int i = 1; i <= n; i++)         if (i != k)           for (int j = 1; j <= n; j++)             if (j != i && j != k) f[i][j] = min(f[i][j], f[i][k] + f[k][j]);     double Min = 1e9;     for (int i = 1; i <= n; i++) {       double Max = 0;       for (int j = 1; j <= n; j++) Max = max(Max, (double)f[i][j]);       Min = min(Min, Max);     }     for (int i = 1; i <= m; i++) {       int x = p[i].first.first, y = p[i].first.second;       for (int j = 1; j <= n; j++) q[j] = make_pair(f[x][j], f[y][j]);       sort(q + 1, q + n + 1);       Max[n + 1] = 0;       for (int j = n; j; j--) Max[j] = max(Max[j + 1], q[j].second);       for (int j = 1; j <= n; j++) {         int l = q[j].first, r = Max[j + 1];         if (l > r) swap(l, r);         if (l + p[i].second >= r) Min = min(Min, (l + p[i].second + r) / 2.0);       }     }     printf( %.1lf n , Min);     return 0;   }   