//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "000"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define MOD 1000000007
#define el "\n"
#define MAX 200005

const int INF=1e9;

int n,m,k,dist[MAX],d[MAX],a[MAX];
vector<int> adj[MAX];

void calc()
{
    dist[1]=0;
    foru(i,2,n) dist[i]=INF;
    queue<int> q;
    q.push(1);
    while(!q.empty())
    {
        int u=q.front(); q.pop();
        for(int v:adj[u])
        {
            if(dist[v]>dist[u]+1)
            {
                dist[v]=dist[u]+1;
                d[a[v]]=max(d[a[v]],dist[v]);
                q.push(v);
            }
        }
    }
    foru(i,1,k) cout<<d[i]<<' ';
}

int main()
{
    fastio
    #ifndef ONLINE_JUDGE
    freopen(FILE ".inp","r",stdin);
    freopen(FILE ".out","w",stdout);
    #endif // ONLINE_JUDGE
    
    cin>>n>>m>>k;
    foru(i,1,n) cin>>a[i];
    foru(i,1,m)
    {
        int u,v; cin>>u>>v;
        adj[u].pb(v);
        adj[v].pb(u);
    }
    calc();
    
    return 0;
}