func_code_string: #include <bits/stdc++.h>   struct Mat {     double a[253][253];   } A[53];   int Sta[25][25], d[25], n, m, a, b, tot;   double p[25], tp[253][253];   std::vector<int> v[25];   void sq(int x, int y) {     register int i, ii, iii;     for (i = 0; i < tot; i++)       for (ii = 0; ii < tot; ii++)         for (iii = 0; iii < tot; iii++)           tp[i][iii] += A[y].a[i][ii] * A[y].a[ii][iii];     for (i = 0; i < tot; i++)       for (ii = 0; ii < tot; ii++) A[x].a[i][ii] = tp[i][ii], tp[i][ii] = 0;   }   int main() {     scanf( %d%d%d%d , &n, &m, &a, &b);     register int i, ii;     for (i = 1; i <= n; i++)       for (ii = i; ii <= n; ii++) Sta[i][ii] = Sta[ii][i] = tot++;     for (i = 1; i <= m; i++) {       int x, y;       scanf( %d%d , &x, &y), d[x]++, d[y]++;       v[x].push_back(y), v[y].push_back(x);     }     for (i = 1; i <= n; i++)       scanf( %lf , p + i), A[0].a[Sta[i][i]][Sta[i][i]] = 1;     for (i = 1; i <= n; i++)       for (ii = i + 1; ii <= n; ii++) {         int Id1 = Sta[i][ii], Id2 = Id1;         double P = p[i], Q = p[ii] * P;         A[0].a[Id1][Id2] += Q;         for (int u : v[ii]) {           Q = (1 - p[ii]) / d[ii] * P, Id2 = Sta[i][u], A[0].a[Id1][Id2] += Q;         }         for (int t : v[i]) {           P = (1 - p[i]) / d[i], Q = p[ii] * P, Id2 = Sta[t][ii],           A[0].a[Id1][Id2] += Q;           for (int u : v[ii]) {             Q = (1 - p[ii]) / d[ii] * P, Id2 = Sta[t][u], A[0].a[Id1][Id2] += Q;           }         }       }     for (i = 1; i <= 50; i++) sq(i, i - 1);     for (i = 1; i <= n; i++) printf( %.12lf  , A[50].a[Sta[a][b]][Sta[i][i]]);     puts(  );   }   