#include <bits/stdc++.h>
using namespace std;
const double esp = 1e-5;
int dis[30][30], du[30], id[30][30];
double p[30], a[500][500];
double solve(int i, int j, int x, int y) {
  double ans = 0;
  if (i == x && j == y)
    ans = p[i] * p[j];
  else if (i == x && j != y)
    ans = p[i] * (1 - p[j]) / du[j] * dis[j][y];
  else if (i != x && j == y)
    ans = p[j] * (1 - p[i]) / du[i] * dis[i][x];
  else if (i != x && j != y)
    ans = (1 - p[i]) * (1 - p[j]) / du[i] / du[j] * dis[i][x] * dis[j][y];
  return ans;
}
int main() {
  int n, m, st1, st2;
  scanf("%d%d%d%d", &n, &m, &st1, &st2);
  for (int i = 1; i <= m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    du[u]++;
    du[v]++;
    dis[u][v] = dis[v][u] = 1;
  }
  for (int i = 1; i <= n; i++) scanf("%lf", &p[i]);
  if (st1 == st2) {
    for (int i = 1; i <= n; i++) {
      if (i == st1)
        printf("%.6f%c", 1.0, i == n ? '\n' : ' ');
      else
        printf("%.6f%c", 0.0, i == n ? '\n' : ' ');
    }
    return 0;
  }
  int cnt = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i != j) id[i][j] = ++cnt;
  int len = n * n - n;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i == j) continue;
      int u = id[i][j];
      a[u][u] = -1;
      for (int x = 1; x <= n; x++) {
        for (int y = 1; y <= n; y++) {
          if (x == y) {
            a[u][len + x] -= solve(i, j, x, y);
            continue;
          }
          int v = id[x][y];
          a[u][v] += solve(i, j, x, y);
        }
      }
    }
  }
  for (int i = 1; i <= len; i++) {
    if (fabs(a[i][i]) < esp) {
      int pos = -1;
      for (int j = i + 1; j <= len; j++)
        if (fabs(a[j][i]) >= esp) {
          pos = j;
          break;
        }
      swap(a[i], a[pos]);
    }
    for (int j = i + 1; j <= len; j++) {
      double f = a[j][i] / a[i][i];
      for (int k = i; k <= n * n; k++) a[j][k] -= f * a[i][k];
    }
  }
  for (int i = len; i >= 1; i--) {
    double f = a[i][i];
    for (int j = len + 1; j <= n * n; j++) a[i][j] /= f;
    a[i][i] = 1;
    for (int j = i - 1; j >= 1; j--) {
      f = a[j][i];
      for (int k = len + 1; k <= n * n; k++) a[j][k] -= f * a[i][k];
    }
  }
  for (int i = 1; i <= n; i++)
    printf("%.6f%c", a[id[st1][st2]][len + i], i == n ? '\n' : ' ');
  return 0;
}
