#include <bits/stdc++.h>
using namespace std;
int read() {
  int a = 0, b = getchar(), c = 1;
  while (!isdigit(b)) c = b == '-' ? -1 : 1, b = getchar();
  while (isdigit(b)) a = a * 10 + b - '0', b = getchar();
  return a * c;
}
void print(int x) {
  char y = x % 10 + '0';
  if (x >= 10) print(x / 10);
  putchar(y);
}
int n, m, s, t, v, z, d[30];
double a[505][505], b[30][30];
int main() {
  n = read(), m = read(), s = read() - 1, t = read() - 1, z = n * n;
  for (int i = 0; i < m; i++) {
    int x = read() - 1, y = read() - 1;
    d[x]++, d[y]++, b[x][y] = b[y][x] = 1;
  }
  for (int i = 0; i < n; i++) scanf("%lf", &b[i][i]);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (i != j) b[i][j] *= (1 - b[i][i]) / d[i];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      a[i * n + j][i * n + j] = -1;
      if (i != j)
        for (int p = 0; p < n; p++)
          for (int q = 0; q < n; q++)
            a[p * n + q][i * n + j] += b[i][p] * b[j][q];
    }
  a[s * n + t][z] = -1;
  for (int i = 0; i < z; i++) {
    for (int j = v = i; j < z; j++)
      if (fabs(a[v][i]) < fabs(a[j][i])) v = j;
    for (int j = 0; j <= z; j++) swap(a[i][j], a[v][j]);
    double u = a[i][i];
    for (int j = 0; j <= z; j++) a[i][j] /= u;
    for (int j = 0; j < z; j++)
      if (u = a[j][i], i != j)
        for (int k = 0; k <= z; k++) a[j][k] -= a[i][k] * u;
  }
  for (int i = 0; i < n; i++) printf("%.10lf ", a[i * n + i][z]);
  return 0;
}
