#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
const int N = 2e5+5;
int a[N];
vector<int> adj[N];
int sum[N], reach[N];
void dfs(int x, int p){
for(auto i: adj[x]){
if(i == p) continue;
dfs(i,x);
if(sum[i] >= a[x]) reach[i] = 1;
sum[x] += sum[i];
}
sum[x] += a[x];
}
void dfs1(int x, int p){
for(auto i: adj[x]){
if(i == p) continue;
if(!reach[x] or !reach[i]) reach[i] = 0;
dfs1(i,x);
}
}
signed main(){
ios::sync_with_stdio(0); cin.tie(0);
int n,m; cin>>n>>m;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=0; i<m; i++){
int u,v; cin>>u>>v;
adj[u].pb(v);
adj[v].pb(u);
}
reach[1] = 1;
dfs(1,-1);
dfs1(1,-1);
for(int i=1; i<=n; i++) cout<<reach[i];
return 0;
}