func_code_string: #include <bits/stdc++.h>   using namespace std;   const int V = 25;   int n, k, sx, sy;   bool adj[V][V];   double p[V];   double mat[V * V][V * V];   int id[V][V], deg[V];   double calc_p(int i, int j) {     return (i == j) ? p[i] : (adj[i][j]) ? (1 - p[i]) / deg[i] : 0.0;   }   void gauss(double a[][V * V], int m, int n) {     for (int i = 0; i < m; i++) {       int u = i;       for (int r = i + 1; r < m; r++)         if (fabs(a[r][i]) > fabs(a[u][i])) u = r;       if (u != i)         for (int j = i; j < m + n; j++) swap(a[i][j], a[u][j]);       double t = a[i][i];       for (int j = i; j < m + n; j++) a[i][j] /= t;       for (int c = 0; c < m; c++)         if (c != i) {           t = a[c][i];           for (int j = i; j < m + n; j++) a[c][j] -= t * a[i][j];         }     }   }   int main() {     int a, b;     scanf( %d%d%d%d , &n, &k, &sx, &sy);     sx--;     sy--;     memset(deg, 0, sizeof(deg));     memset(adj, 0, sizeof(adj));     for (int i = 0; i < k; i++) {       scanf( %d%d , &a, &b);       a--;       b--;       adj[a][b] = adj[b][a] = true;       deg[a]++;       deg[b]++;     }     int m = 0;     for (int i = 0; i < n; i++)       for (int j = i; j < n; j++) id[i][j] = id[j][i] = m++;     for (int i = 0; i < n; i++) scanf( %lf , &p[i]);     memset(mat, 0, sizeof(mat));     for (int i = 0; i < n; i++)       for (int j = i + 1; j < n; j++) {         for (int x = 0; x < n; x++)           for (int y = 0; y < n; y++) {             mat[id[i][j]][id[x][y]] += calc_p(i, x) * calc_p(j, y);           }       }     for (int i = 0; i < m; i++) mat[i][i] -= 1;     for (int i = 0; i < n; i++) mat[id[i][i]][id[i][i]] = 1;     for (int i = 0; i < n; i++) mat[id[i][i]][m + i] = 1;     gauss(mat, m, n);     for (int i = 0; i < n; i++) {       if (i) printf(   );       printf( %.9f , mat[id[sx][sy]][m + i]);     }     printf(  n );   }   