#include <bits/stdc++.h>
using namespace std;
const double eps = 10e-10;
const int maxn = 500;
int n, m, a, b;
int d[maxn];
double p[maxn];
bool v[maxn][maxn], s[maxn];
double mat[maxn][maxn];
inline int No(int x, int y) { return n * (x - 1) + y; }
int main() {
  cin >> n >> m >> a >> b;
  if (a == b) {
    for (int i = 1; i <= n; i++)
      if (i == a)
        cout << 1 << ' ';
      else
        cout << 0 << ' ';
    cout << endl;
    return 0;
  }
  int x, y;
  for (int i = 0; i < m; i++) {
    cin >> x >> y;
    d[x]++;
    d[y]++;
    v[x][y] = true;
    v[y][x] = true;
  }
  for (int i = 1; i <= n; i++) cin >> p[i];
  double px, py;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      x = No(i, j);
      if (i != j)
        mat[x][x] = -1;
      else {
        s[x] = true;
        continue;
      }
      for (int k = 1; k <= n; k++) {
        if (!v[i][k] && i != k) continue;
        if (i == k)
          px = p[i];
        else
          px = (1 - p[i]) / d[i];
        for (int l = 1; l <= n; l++) {
          if (!v[j][l] && j != l) continue;
          if (j == l)
            py = p[j];
          else
            py = (1 - p[j]) / d[j];
          y = No(k, l);
          mat[x][y] += px * py;
        }
      }
    }
  cout.setf(ios::fixed);
  cout.precision(10);
  int N = n * n;
  for (int j = 1; j <= N; j++) {
    if (s[j]) continue;
    x = 0;
    px = 0;
    for (int i = j; i <= N; i++)
      if (fabs(mat[i][j]) - px > eps) x = i, px = fabs(mat[i][j]);
    if (x == 0) continue;
    for (int i = 1; i <= N; i++) swap(mat[j][i], mat[x][i]);
    for (int i = j + 1; i <= N; i++) {
      double fac = mat[i][j] / mat[j][j];
      for (int k = 1; k <= N; k++) mat[i][k] -= mat[j][k] * fac;
    }
  }
  for (int i = N - 1; i > 0; i--) {
    for (int j = i + 1; j <= N; j++) {
      if (fabs(mat[j][j]) < eps) continue;
      double fac = mat[i][j];
      for (int k = 1; k <= N; k++) mat[i][k] -= mat[j][k] * fac;
    }
    double fac = mat[i][i];
    if (fabs(fac) < eps) continue;
    for (int j = 1; j <= N; j++) {
      mat[i][j] /= fac;
      if (fabs(mat[i][j]) < eps) mat[i][j] = 0;
    }
  }
  x = No(a, b);
  for (int i = 1; i <= n; i++) {
    cout << -mat[x][No(i, i)] / mat[x][x] << ' ';
  }
}
