func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Edge {     int x;     int y;     int w;   };   const int N = 200 + 7;   const int INF = (int)1e9;   int n;   int m;   int d[N][N];   struct T {     int f;     int s;   };   bool operator<(T a, T b) { return a.s - a.f < b.s - b.f; }   int solve(int x, int y, int w) {     vector<T> pts;     for (int i = 1; i <= n; i++) {       pts.push_back({d[x][i], d[y][i] + w});     }     sort(pts.begin(), pts.end());     vector<int> pre(n), suf(n);     pre[0] = pts[0].s;     for (int i = 1; i < n; i++) {       pre[i] = max(pre[i - 1], pts[i].s);     }     suf[n - 1] = pts[n - 1].f;     for (int i = n - 2; i >= 0; i--) {       suf[i] = max(suf[i + 1], pts[i].f);     }     vector<int> tt(n);     for (int i = 0; i < n; i++) {       tt[i] = (pts[i].s - pts[i].f) / 2;     }     int ret = INF;     for (int last = -1; last < n; last++) {       if (last == -1) {         int m_suf = suf[last + 1];         int t = tt[last + 1];         ret = min(ret, m_suf + t);         continue;       }       if (last == n - 1) {         int m_pre = pre[last];         int t = tt[last];         ret = min(ret, m_pre - t);         continue;       }       int t1 = tt[last];       int t2 = tt[last + 1];       int m_pre = pre[last];       int m_suf = suf[last + 1];       ret = min(ret, max(m_suf + t1, m_pre - t1));       ret = min(ret, max(m_suf + t2, m_pre - t2));       int t = (m_pre - m_suf) / 2;       if (t1 <= t && t <= t2) {         ret = min(ret, max(m_suf + t, m_pre - t));       }     }     return ret;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cin >> n >> m;     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) {         d[i][j] = INF;       }       d[i][i] = 0;     }     vector<Edge> e(m);     for (int i = 0; i < m; i++) {       cin >> e[i].x >> e[i].y >> e[i].w;       e[i].w *= 2;       d[e[i].x][e[i].y] = d[e[i].y][e[i].x] = e[i].w;     }     for (int k = 1; k <= n; k++) {       for (int i = 1; i <= n; i++) {         for (int j = 1; j <= n; j++) {           d[i][j] = min(d[i][j], d[i][k] + d[k][j]);         }       }     }     solve(e[0].x, e[0].y, e[0].w);     int ret = INF;     for (auto &it : e) {       ret = min(ret, solve(it.x, it.y, it.w));     }     if (ret % 2 == 0) {       cout << ret / 2 <<  .0 n ;     } else {       cout << ret / 2 <<  .5 n ;     }   }   