func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 50, maxm = 5e3, inf = 1e8;   int n, m, q, k, tot, ter[maxm + 3], cap[maxm + 3], wei[maxm + 3], nxt[maxm + 3],       lnk[maxn + 3], dist[maxn + 3], pre[maxn + 3], f[maxn + 3];   bool in[maxn + 3];   long long g[maxn + 3], h[maxn + 3];   void add(int u, int v, int c, int w) {     ter[++tot] = v, cap[tot] = c, wei[tot] = w, nxt[tot] = lnk[u], lnk[u] = tot;   }   void add_flow(int u, int v, int c, int w) { add(u, v, c, w), add(v, u, 0, -w); }   int rev(int x) { return x & 1 ? x + 1 : x - 1; }   bool spfa() {     fill(dist + 1, dist + n + 1, inf);     fill(pre + 1, pre + n + 1, 0);     queue<int> Q;     Q.push(1), dist[1] = 0, in[1] = true;     while (!Q.empty()) {       int u = Q.front();       Q.pop(), in[u] = false;       for (int i = lnk[u], v, c, w; i; i = nxt[i]) {         v = ter[i], c = cap[i], w = wei[i];         if (c > 0 && dist[v] > dist[u] + w) {           dist[v] = dist[u] + w, pre[v] = i;           if (!in[v]) {             in[v] = true, Q.push(v);           }         }       }     }     return pre[n];   }   int main() {     scanf( %d %d , &n, &m);     for (int i = 1, u, v, w; i <= m; i++) {       scanf( %d %d %d , &u, &v, &w);       add_flow(u, v, 1, w);     }     while (spfa()) {       int x = n, t;       while (x != 1) {         t = pre[x];         cap[t]--, cap[rev(t)]++;         x = ter[rev(t)];       }       f[++k] = dist[n];       g[k] = g[k - 1] + f[k];       h[k] = 1ll * k * f[k] - g[k];     }     scanf( %d , &q);     for (int x, t; q-- > 0;) {       scanf( %d , &x);       t = upper_bound(h + 1, h + k + 1, x) - (h + 1);       printf( %.9lf n , 1. * (g[t] + x) / t);     }     return 0;   }   