#include <bits/stdc++.h>
int deg[25];
double g[25][25];
double p[510][510];
int main() {
  int n, m, a, b;
  scanf("%d%d%d%d", &n, &m, &a, &b);
  a--;
  b--;
  int s = n * n;
  int x, y;
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    x--;
    y--;
    deg[x]++;
    deg[y]++;
    g[x][y] = g[y][x] = 1;
  }
  for (int i = 0; i < n; i++) {
    scanf("%lf", &g[i][i]);
    for (int j = 0; j < n; j++) {
      if (i != j) {
        g[i][j] *= (1 - g[i][i]) / (double)deg[i];
      }
    }
  }
  for (int i = 0; i < s; i++) {
    x = i / n;
    y = i % n;
    p[i][i] = -1;
    if (x != y) {
      for (int j = 0; j < n; j++) {
        for (int k = 0; k < n; k++) {
          p[j * n + k][i] += g[x][j] * g[y][k];
        }
      }
    }
  }
  p[n * a + b][s] = -1;
  double tmp;
  for (int i = 0; i < s; i++) {
    if (fabs(p[i][i]) < 1e-10)
      for (int j = i + 1; j < s; j++)
        if (fabs(p[j][i]) > 1e-10)
          for (int k = i; k < s + 1; k++) std::swap(p[i][k], p[j][k]);
    tmp = p[i][i];
    for (int k = i; k < s + 1; k++) p[i][k] /= tmp;
    for (int j = 0; j < s; j++)
      if (i != j && fabs(tmp = p[j][i]) > 1e-10)
        for (int k = i; k < s + 1; k++) p[j][k] -= tmp * p[i][k];
  }
  for (int i = 0; i < n; i++) {
    printf("%.9lf ", p[n * i + i][s]);
  }
  return 0;
}
