func_code_string: #include <bits/stdc++.h>   using namespace std;   const double esp = 1e-5;   int dis[30][30], du[30], id[30][30];   double p[30], a[500][500];   double solve(int i, int j, int x, int y) {     double ans = 0;     if (i == x && j == y)       ans = p[i] * p[j];     else if (i == x && j != y)       ans = p[i] * (1 - p[j]) / du[j] * dis[j][y];     else if (i != x && j == y)       ans = p[j] * (1 - p[i]) / du[i] * dis[i][x];     else if (i != x && j != y)       ans = (1 - p[i]) * (1 - p[j]) / du[i] / du[j] * dis[i][x] * dis[j][y];     return ans;   }   int main() {     int n, m, st1, st2;     scanf( %d%d%d%d , &n, &m, &st1, &st2);     for (int i = 1; i <= m; i++) {       int u, v;       scanf( %d%d , &u, &v);       du[u]++;       du[v]++;       dis[u][v] = dis[v][u] = 1;     }     for (int i = 1; i <= n; i++) scanf( %lf , &p[i]);     if (st1 == st2) {       for (int i = 1; i <= n; i++) {         if (i == st1)           printf( %.6f%c , 1.0, i == n ?   n  :    );         else           printf( %.6f%c , 0.0, i == n ?   n  :    );       }       return 0;     }     int cnt = 0;     for (int i = 1; i <= n; i++)       for (int j = 1; j <= n; j++)         if (i != j) id[i][j] = ++cnt;     int len = n * n - n;     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) {         if (i == j) continue;         int u = id[i][j];         a[u][u] = -1;         for (int x = 1; x <= n; x++) {           for (int y = 1; y <= n; y++) {             if (x == y) {               a[u][len + x] -= solve(i, j, x, y);               continue;             }             int v = id[x][y];             a[u][v] += solve(i, j, x, y);           }         }       }     }     for (int i = 1; i <= len; i++) {       if (fabs(a[i][i]) < esp) {         int pos = -1;         for (int j = i + 1; j <= len; j++)           if (fabs(a[j][i]) >= esp) {             pos = j;             break;           }         swap(a[i], a[pos]);       }       for (int j = i + 1; j <= len; j++) {         double f = a[j][i] / a[i][i];         for (int k = i; k <= n * n; k++) a[j][k] -= f * a[i][k];       }     }     for (int i = len; i >= 1; i--) {       double f = a[i][i];       for (int j = len + 1; j <= n * n; j++) a[i][j] /= f;       a[i][i] = 1;       for (int j = i - 1; j >= 1; j--) {         f = a[j][i];         for (int k = len + 1; k <= n * n; k++) a[j][k] -= f * a[i][k];       }     }     for (int i = 1; i <= n; i++)       printf( %.6f%c , a[id[st1][st2]][len + i], i == n ?   n  :    );     return 0;   }   