func_code_string: #include <bits/stdc++.h>   using namespace std;   enum STATE { IN, OUT, BOUNDRY };   const double PI = acos(-1.0);   void fast_in_out() {     std::ios_base::sync_with_stdio(NULL);     cin.tie(NULL);     cout.tie(NULL);   }   int dx[] = {0, 0, -1, 1, -1, 1, -1, 1, 0};   int dy[] = {-1, 1, 0, 0, -1, -1, 1, 1, 0};   int lx[] = {2, 2, -1, 1, -2, -2, -1, 1};   int ly[] = {-1, 1, 2, 2, 1, -1, -2, -2};   const int N = 19, M = 200 + 10, mod = 998244353;   const double eps = 1e-9;   long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }   int n;   double ar[N][N];   double dp[N][(1 << N)];   int main() {     fast_in_out();     cout << fixed << setprecision(9);     cin >> n;     for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) cin >> ar[i][j];       dp[i][1 << i] = 1;     }     for (int mask = 3; mask < (1 << n); mask++) {       int cnt = __builtin_popcount(mask);       if (cnt == 1) continue;       cnt = cnt * (cnt - 1) / 2;       double lose[N]{0};       for (int i = 0; i < n; i++) {         for (int j = i + 1; j < n && (mask & (1 << i)); j++) {           if (mask & (1 << j)) {             lose[j] += ar[i][j] / cnt;             lose[i] += ar[j][i] / cnt;           }         }       }       for (int i = 0; i < n; i++) {         for (int j = i + 1; j < n && (mask & (1 << i)); j++) {           if (mask & (1 << j)) {             dp[j][mask] += dp[j][mask - (1 << i)] * lose[i];             dp[i][mask] += dp[i][mask - (1 << j)] * lose[j];           }         }       }     }     for (int i = 0; i < n; i++) cout << dp[i][(1 << n) - 1] <<    ;     return 0;   }   