#include <bits/stdc++.h>
using namespace std;
int n, m, x, y, s, d[550];
double f[550][550], g[550][550];
void init() {
  scanf("%d%d%d%d", &n, &m, &x, &y);
  s = n * n;
  x--, y--;
  for (int i = 1; i <= m; i++) {
    int p, q;
    scanf("%d%d", &p, &q);
    p--, q--;
    f[p][q] = f[q][p] = 1.0;
    d[p]++, d[q]++;
  }
  for (int i = 0; i < n; i++) scanf("%lf", &f[i][i]);
}
void ptm() {
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (i != j) f[i][j] = f[i][j] * (1 - f[i][i]) / (double)(d[i]);
  for (int i = 0; i < s; i++) {
    int x = i / n, y = i % n;
    g[i][i] -= 1;
    if (x != y)
      for (int j = 0; j < n; j++)
        for (int k = 0; k < n; k++) g[j * n + k][i] += f[x][j] * f[y][k];
  }
  g[x * n + y][s] = -1;
  for (int i = 0; i < s; i++) {
    for (int j = i; j < s; j++)
      if (fabs(g[j][i]) > 1e-9) {
        for (int k = i; k <= s; k++) swap(g[j][k], g[i][k]);
        break;
      }
    double t = g[i][i];
    for (int k = i; k <= s; k++) g[i][k] /= t;
    for (int j = 0; j < s; j++)
      if (i != j) {
        t = g[j][i];
        for (int k = i; k <= s; k++) g[j][k] -= g[i][k] * t;
      }
  }
  for (int i = 0; i < n; i++) printf("%.9lf ", g[i * n + i][s]);
  return;
}
int main() {
  init();
  ptm();
  return 0;
}
