/* package whatever; // don't place package name! */
 
 
/*
 
7
6
1 2
1 3
2 4
2 5
3 6
3 7
 
case 2:-
2
1
1 2
 
cas 3:-
1
0
 
*/
 
 
import java.util.*;
import java.lang.*;
import java.io.*;
 
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		List<List<Integer>> adj = new ArrayList<>();
		for(int i=0; i<=n;i++){
			adj.add(new ArrayList<>());
		}
		int[] val = new int[adj.size()];
		
		for(int i=1;i<val.length;i++){
			val[i] = sc.nextInt();
		}
 
		for(int i=0; i<m; i++){
			int u = sc.nextInt();
			int v = sc.nextInt();
			adj.get(u).add(v);
			adj.get(v).add(u);
		}
 
		int []ans = countTheNumberOf1(adj,1,val);
		System.out.println(Arrays.toString(ans));
 
	}
 
	public static int[] countTheNumberOf1(List<List<Integer>> adj,int src,int []val){
 
		Queue<Integer> q = new LinkedList<>();
		boolean visited[] = new boolean[adj.size()];
		q.add(src);
		visited[src] = true;
		int[] ans = new int[val.length];
		
		ans[src] = val[src];
		while(!q.isEmpty()){
			int cur = q.poll();
			for(int x : adj.get(cur)){
				if(!visited[x]){
					q.add(x);
					visited[x] = true;
					if(val[x] == 1){
						ans[x]= ans[cur]+1;
					}else{
						ans[x]=ans[cur];
					}
				}
			}
		}
 
		return ans;
 
	}
 
}