func_code_string: #include <bits/stdc++.h>   #pragma optimization_level 3   #pragma comment(linker,  /stack:200000000 )   #pragma GCC optimize( Ofast )   #pragma GCC target( sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native )   using namespace std;   long double TL = 1.0;   bool is_tl = 0;   long long CALLS = 0;   inline bool IS() {     if (++CALLS == 1000) {       CALLS = 0;       is_tl |= clock() > (TL - 0.1) * CLOCKS_PER_SEC;     }     return is_tl;   }   template <typename T>   inline void amin(T &a, T b) {     if (a > b) a = b;   }   template <typename T>   inline void amax(T &a, T b) {     if (a < b) a = b;   }   template <typename T>   inline void print(T a) {     for (auto U : a) cout << U <<    ;     cout <<   n ;   }   const long long N = 1e6 + 7, NS = 1e3 + 7, lg = 18, sq = 550, inf = 1e9 + 7,                   mod = 1e9 + 7, SM = 1e2 + 7;   const long double eps = 1e-9;   mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());   struct edge {     long long to;     long long f;     long long c;     long long get() { return c - f; }   };   vector<edge> e;   vector<long long> v[N];   vector<pair<pair<long long, long long>, long long> > edges;   long long n, m, used[N];   void add_edge(long long a, long long b, long long c) {     v[a].push_back(e.size());     edge ed;     ed.to = b;     ed.f = 0;     ed.c = c;     e.push_back(ed);     v[b].push_back(e.size());     ed.to = a;     ed.c = 0;     e.push_back(ed);   }   long long dfs(long long x, long long f) {     if (x == n - 1) return f;     used[x] = 1;     for (auto u : v[x]) {       if (used[e[u].to] || e[u].get() <= 0) continue;       long long y = dfs(e[u].to, min(f, e[u].get()));       if (y) {         e[u].f += y;         e[u ^ 1].f -= y;         return y;       }     }     return 0;   }   signed main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long need;     cin >> n >> m >> need;     for (long long i = 1; i <= m; i++) {       long long a, b, c;       cin >> a >> b >> c;       a--, b--;       edges.push_back({{a, b}, c});     }     long double l = 0, r = inf, mid;     for (long long it = 0; it < 200; it++) {       mid = (l + r) / 2;       e.clear();       for (long long i = 0; i < n; i++) v[i].clear();       for (auto u : edges) {         long long a = u.first.first, b = u.first.second,                   c = (long long)((u.second + 0.) / mid);         add_edge(a, b, c);       }       long long ans = 0;       while (1) {         for (long long i = 0; i < n; i++) used[i] = 0;         long long y = dfs(0, inf);         if (!y) break;         ans += y;       }       if (ans >= need)         l = mid;       else         r = mid;     }     cout << fixed << setprecision(10);     cout << mid * (0. + need);   }   