#include <bits/stdc++.h>
using namespace std;
int visited[2][100010];
queue<int> Q[2];
vector<int> L[2][100010];
int main() {
  int n, m, i, k;
  scanf("%d %d", &n, &m);
  for (i = 1; i <= n; i++) {
    int t;
    scanf("%d", &t);
    for (k = 1; k <= 2; k++) {
      if (t == k) {
        Q[k - 1].push(i);
        visited[k - 1][i] = 1;
      }
    }
  }
  while (m--) {
    int a, b;
    scanf("%d %d", &a, &b);
    L[0][a].push_back(b);
    if (!visited[0][b]) L[1][b].push_back(a);
  }
  for (k = 1; k <= 2; k++) {
    while (!Q[k - 1].empty()) {
      int v = Q[k - 1].front();
      Q[k - 1].pop();
      for (i = 0; i < L[k - 1][v].size(); i++) {
        int y = L[k - 1][v][i];
        if (!visited[k - 1][y]) {
          visited[k - 1][y] = 1;
          Q[k - 1].push(y);
        }
      }
    }
  }
  for (i = 1; i <= n; i++) printf("%d\n", visited[0][i] & visited[1][i]);
  return 0;
}
