#include <bits/stdc++.h>
using namespace std;
const int maxn = 22 * 22 + 5;
double g[25][25], a[maxn][maxn];
int n, m, d[25], tot, id[maxn][maxn], s, t;
int get() {
  int f = 0, v = 0;
  char ch;
  while (!isdigit(ch = getchar()))
    if (ch == '-') break;
  if (ch == '-')
    f = 1;
  else
    v = ch - 48;
  while (isdigit(ch = getchar())) v = v * 10 + ch - 48;
  if (f == 1)
    return -v;
  else
    return v;
}
double getd() {
  double d = 0, d2 = 0, d3 = 1;
  char ch;
  bool flag = 0;
  while (!isdigit(ch = getchar()))
    if (ch == '-') break;
  if (ch == '-')
    flag = true;
  else
    d = ch - 48;
  while (isdigit(ch = getchar())) d = d * 10 + ch - 48;
  if (ch == '.') {
    while (isdigit(ch = getchar())) d2 = d2 * 10 + ch - 48, d3 = d3 * 0.1;
    d += d3 * d2;
  }
  if (flag)
    return -d;
  else
    return d;
}
int main() {
  n = get(), m = get();
  s = get() - 1, t = get() - 1;
  while (m--) {
    int x = get() - 1, y = get() - 1;
    g[x][y] = g[y][x] = 1, d[x]++, d[y]++;
  }
  for (int i = 0; i < n; i++) g[i][i] = getd();
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      id[i][j] = i * n + j;
      if (i != j) g[i][j] *= (1 - g[i][i]) / d[i];
    }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      a[id[i][j]][id[i][j]] = -1;
      if (i == j) continue;
      for (int k = 0; k < n; k++)
        if (fabs(g[i][k]) > 1e-8)
          for (int l = 0; l < n; l++)
            a[id[k][l]][id[i][j]] += g[i][k] * g[j][l];
    }
  a[id[s][t]][n * n] = -1;
  for (int i = 0; i < n * n; i++) {
    int master = i;
    for (int j = i; j < n * n; j++)
      if (fabs(a[j][i]) > fabs(a[master][i])) master = j;
    for (int j = 0; j <= n * n; j++) swap(a[master][j], a[i][j]);
    double tp = a[i][i];
    for (int j = 0; j <= n * n; j++) a[i][j] /= tp;
    for (int j = 0; j < n * n; j++) {
      if (j == i)
        continue;
      else
        tp = a[j][i];
      for (int k = 0; k <= n * n; k++) a[j][k] -= tp * a[i][k];
    }
  }
  for (int i = 0; i < n; i++) printf("%.10lf ", a[id[i][i]][n * n]);
  return 0;
}
