func_code_string: #include <bits/stdc++.h>   using namespace std;   const int C = 20, A = 40;   int n, liq;   int dp[1 << C];   long long k[A];   int main() {     scanf(  %d %d , &n, &liq);     for (int i = 0; i < n; i++)       for (int j = 0, first; j < n; j++)         cin >> first, k[i] |= (long long)(first || i == j) << j;     for (int i = 1; i < (1 << max(0, n - C)); i++) {       int first = i;       for (int j = 0; j < C; j++)         if ((i >> j) & 1) first &= k[j + C] >> C;       if (first == i) dp[i] = __builtin_popcount(i);     }     for (int i = 1; i < (1 << max(0, n - C)); i++)       for (int j = 0; j < C; j++)         if ((i >> j) & 1) dp[i] = max(dp[i], dp[i ^ (1 << j)]);     int ans = 0;     for (int i = 0; i < (1 << min(C, n)); i++) {       int first = i, second = (1 << max(0, n - C)) - 1;       for (int j = 0; j < min(C, n); j++)         if ((i >> j) & 1) first &= k[j] & ((1 << C) - 1), second &= k[j] >> C;       if (first != i) continue;       ans = max(ans, __builtin_popcount(i) + dp[second]);     }     long double l = liq, a = ans;     cout << fixed << setprecision(7) << (l * l * (a - 1)) / 2 / a << endl;   }   