#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while ('0' > ch || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while ('0' <= ch && ch <= '9') {
    x = (x << 1) + (x << 3) + ch - '0';
    ch = getchar();
  }
  return x * f;
}
int n, m, f, s, b[25][25], id[25][25], cnt;
double dp[1005][10][10], p[26][26], de[23], a[25], ans[26], c[625][625];
double ffabs(double x) {
  if (x < 0)
    return x * -1.000000;
  else
    return x;
}
int main() {
  cin >> n >> m >> f >> s;
  dp[0][f][s] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) id[i][j] = ++cnt;
  for (int i = 1; i <= m; i++) {
    int x, y;
    cin >> x >> y;
    b[x][y]++;
    b[y][x]++;
    de[x]++;
    de[y]++;
  }
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i == j)
        p[i][j] = a[i];
      else if (b[i][j])
        p[i][j] = (1 - a[i]) / de[i];
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i == f && j == s) c[id[i][j]][cnt + 1] = -1;
      c[id[i][j]][id[i][j]] = -1;
      for (int k = 1; k <= n; k++) {
        for (int l = 1; l <= n; l++) {
          if (k == l) continue;
          c[id[i][j]][id[k][l]] += p[k][i] * p[l][j];
        }
      }
    }
  }
  for (int i = 1; i <= cnt; i++) {
    int pos = i;
    for (int j = i + 1; j <= cnt; j++) {
      if (ffabs(c[j][i]) > ffabs(c[pos][i])) pos = j;
    }
    for (int j = 1; j <= cnt + 1; j++) swap(c[pos][j], c[i][j]);
    if (!c[i][i]) return 0;
    for (int j = i + 1; j <= cnt + 1; j++) c[i][j] /= c[i][i];
    for (int k = 1; k <= cnt; k++)
      for (int j = 1; j <= cnt + 1; j++)
        if (j != i && k != i) c[k][j] = c[k][j] - (c[k][i] * c[i][j]);
  }
  for (int i = 1; i <= cnt; i++) {
    if (i % n == int(i / n) + 1) ans[i % n] = c[i][cnt + 1];
  }
  ans[n] = c[cnt][cnt + 1];
  for (int i = 1; i <= n; i++) printf("%.8lf\n", ans[i]);
  return 0;
}
