func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 205;   const int maxm = 4005;   int n, m, p, s, t, ss, tt;   namespace Flow {   int tot, S, T, V;   int head[maxn], nxt[maxm * 2], to[maxm * 2], cap[maxm * 2], cost[maxm * 2];   int dist[maxn], parv[maxn], pare[maxn];   bool in[maxn];   queue<int> q;   void init() {     tot = 0;     memset(head, -1, sizeof(head));   }   void addedge(int u, int v, int c, int co) {     nxt[tot] = head[u];     to[tot] = v;     cap[tot] = c;     cost[tot] = co;     head[u] = tot++;     nxt[tot] = head[v];     to[tot] = u;     cap[tot] = 0;     cost[tot] = -co;     head[v] = tot++;   }   int flow() {     for (int i = 0; i < (V); i++) in[i] = false, dist[i] = int(1e9);     dist[S] = 0;     in[S] = true;     q.push(S);     while (!q.empty()) {       int x = q.front();       q.pop();       in[x] = false;       for (int i = head[x]; ~i; i = nxt[i]) {         if (cap[i] && dist[to[i]] > dist[x] + cost[i]) {           dist[to[i]] = dist[x] + cost[i];           parv[to[i]] = x;           pare[to[i]] = i;           if (!in[to[i]]) {             in[to[i]] = true;             q.push(to[i]);           }         }       }     }     if (dist[T] == int(1e9)) return -int(1e9);     int res = 0;     for (int i = T; i != S; i = parv[i]) {       res += cost[pare[i]];       cap[pare[i]]--;       cap[pare[i] ^ 1]++;     }     return res;   }   }  // namespace Flow   int main() {     scanf( %d %d , &n, &m);     s = 1, t = n;     Flow::init();     ss = 0;     tt = n + 1;     Flow::S = n + 2;     Flow::T = Flow::S + 1;     Flow::V = Flow::T + 1;     Flow::addedge(Flow::S, tt, int(1e9), 0);     Flow::addedge(t, Flow::T, int(1e9), 0);     Flow::addedge(ss, s, int(1e9), 0);     Flow::addedge(Flow::S, s, int(1e9), 0);     for (int i = 1; i <= (m); i++) {       int u, v, d, c;       scanf( %d%d%d , &u, &v, &d);       Flow::addedge(u, v, 1, d);     }     for (int i = 1; i <= (n); i++) Flow::addedge(i, tt, int(1e9), 0);     vector<int> data;     for (;;) {       int f = Flow::flow();       if (f == -int(1e9)) break;       data.push_back(f);     }     int q;     scanf( %d , &q);     while (q--) {       int p;       scanf( %d , &p);       long long s = 0;       int c = 0;       double ans = 1e18;       for (int i = 0; i < data.size(); i++) {         s += data[i];         c++;         double cur = double(s + p) / double(c);         if (cur < ans)           ans = cur;         else           break;       }       printf( %.10lf n , ans);     }     return 0;   }   