//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
 
#define file "dynamite"
#define ff(i, a, b) for(auto i=(a); i<=(b); ++i)
#define ffr(i, b, a) for(auto i=(b); i>=(a); --i)
#define nl "\n"
#define ss " "
//#define pb push_back
#define pb emplace_back
#define fi first
#define se second
#define sz(s) (int)s.size()
#define all(s) (s).begin(), (s).end()
#define ms(a,x) memset(a, x, sizeof (a))
#define cn continue
#define re exit(0)
 
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
 
const int mod=1e9+7;
const int maxn=3e5+15;
const ll inf=1e17;
 
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll ran(ll l, ll r)
{
    return uniform_int_distribution<ll> (l, r)(rng);
}
 
inline void rf(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    if(fopen(file".inp","r")){
        freopen(file".inp","r",stdin); freopen(file".out","w",stdout);
    }
}
 
template<typename T> inline void add(T &x, const T &y)
{
    x+=y;
    if(x>=mod) x-=mod;
    if(x<0) x+=mod;
}
 
template<typename T> inline bool maxi(T &a, T b)
{
    if(a>=b) return 0;
    a=b; return 1;
}
 
template<typename T> inline bool mini(T &a, T b)
{
    if(a<=b) return 0;
    a=b; return 1;
}
 
int n, m, val, cnt=0;
int l[maxn], kc[maxn];
bool spe[maxn];
vi g[maxn];
 
void dfs(int u, int par)
{
    if(spe[u]) l[u]=0;
    for(auto v:g[u]) if(v!=par)
    {
        dfs(v, u);
        if(l[v]>-1 && l[v]+1>kc[u]) maxi(l[u], l[v]+1);
        if(l[u]+1<=kc[v]) l[u]=-2, maxi(kc[u], kc[v]-1);
    }
    if(l[u]==val) ++cnt, l[u]=-2, kc[u]=val;
}
 
bool check()
{
    ff(i, 1, n) l[i]=-1, kc[i]=-1e9;
    dfs(1, 0);
    if(l[1]>-1) ++cnt;
    return cnt<=m;
}
 
signed main()
{
    rf();
    cin>>n>>m;
    ff(i, 1, n) cin>>spe[i];
    ff(i, 1, n-1)
    {
        int u, v; cin>>u>>v;
        g[u].pb(v); g[v].pb(u);
    }
    int l=0, r=n/m+1, ans=-1;
    while(l<=r)
    {
        int mid=(l+r)>>1;
        val=mid; cnt=0;
        if(check()) ans=mid, r=mid-1;
        else l=mid+1;
    }
    cout<<ans;
    re;
}
 
 
				Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAiZHluYW1pdGUiCiNkZWZpbmUgZmYoaSwgYSwgYikgZm9yKGF1dG8gaT0oYSk7IGk8PShiKTsgKytpKQojZGVmaW5lIGZmcihpLCBiLCBhKSBmb3IoYXV0byBpPShiKTsgaT49KGEpOyAtLWkpCiNkZWZpbmUgbmwgIlxuIgojZGVmaW5lIHNzICIgIgovLyNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzeihzKSAoaW50KXMuc2l6ZSgpCiNkZWZpbmUgYWxsKHMpIChzKS5iZWdpbigpLCAocykuZW5kKCkKI2RlZmluZSBtcyhhLHgpIG1lbXNldChhLCB4LCBzaXplb2YgKGEpKQojZGVmaW5lIGNuIGNvbnRpbnVlCiNkZWZpbmUgcmUgZXhpdCgwKQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsbDsKdHlwZWRlZiB2ZWN0b3I8cGlpPiB2cGlpOwp0eXBlZGVmIHZlY3RvcjxwbGw+IHZwbGw7Cgpjb25zdCBpbnQgbW9kPTFlOSs3Owpjb25zdCBpbnQgbWF4bj0zZTUrMTU7CmNvbnN0IGxsIGluZj0xZTE3OwoKbXQxOTkzN182NCBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKbGwgcmFuKGxsIGwsIGxsIHIpCnsKICAgIHJldHVybiB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248bGw+IChsLCByKShybmcpOwp9CgppbmxpbmUgdm9pZCByZigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKICAgIGlmKGZvcGVuKGZpbGUiLmlucCIsInIiKSl7CiAgICAgICAgZnJlb3BlbihmaWxlIi5pbnAiLCJyIixzdGRpbik7IGZyZW9wZW4oZmlsZSIub3V0IiwidyIsc3Rkb3V0KTsKICAgIH0KfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKFQgJngsIGNvbnN0IFQgJnkpCnsKICAgIHgrPXk7CiAgICBpZih4Pj1tb2QpIHgtPW1vZDsKICAgIGlmKHg8MCkgeCs9bW9kOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBtYXhpKFQgJmEsIFQgYikKewogICAgaWYoYT49YikgcmV0dXJuIDA7CiAgICBhPWI7IHJldHVybiAxOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBtaW5pKFQgJmEsIFQgYikKewogICAgaWYoYTw9YikgcmV0dXJuIDA7CiAgICBhPWI7IHJldHVybiAxOwp9CgppbnQgbiwgbSwgdmFsLCBjbnQ9MDsKaW50IGxbbWF4bl0sIGtjW21heG5dOwpib29sIHNwZVttYXhuXTsKdmkgZ1ttYXhuXTsKCnZvaWQgZGZzKGludCB1LCBpbnQgcGFyKQp7CiAgICBpZihzcGVbdV0pIGxbdV09MDsKICAgIGZvcihhdXRvIHY6Z1t1XSkgaWYodiE9cGFyKQogICAgewogICAgICAgIGRmcyh2LCB1KTsKICAgICAgICBpZihsW3ZdPi0xICYmIGxbdl0rMT5rY1t1XSkgbWF4aShsW3VdLCBsW3ZdKzEpOwogICAgICAgIGlmKGxbdV0rMTw9a2Nbdl0pIGxbdV09LTIsIG1heGkoa2NbdV0sIGtjW3ZdLTEpOwogICAgfQogICAgaWYobFt1XT09dmFsKSArK2NudCwgbFt1XT0tMiwga2NbdV09dmFsOwp9Cgpib29sIGNoZWNrKCkKewogICAgZmYoaSwgMSwgbikgbFtpXT0tMSwga2NbaV09LTFlOTsKICAgIGRmcygxLCAwKTsKICAgIGlmKGxbMV0+LTEpICsrY250OwogICAgcmV0dXJuIGNudDw9bTsKfQoKc2lnbmVkIG1haW4oKQp7CiAgICByZigpOwogICAgY2luPj5uPj5tOwogICAgZmYoaSwgMSwgbikgY2luPj5zcGVbaV07CiAgICBmZihpLCAxLCBuLTEpCiAgICB7CiAgICAgICAgaW50IHUsIHY7IGNpbj4+dT4+djsKICAgICAgICBnW3VdLnBiKHYpOyBnW3ZdLnBiKHUpOwogICAgfQogICAgaW50IGw9MCwgcj1uL20rMSwgYW5zPS0xOwogICAgd2hpbGUobDw9cikKICAgIHsKICAgICAgICBpbnQgbWlkPShsK3IpPj4xOwogICAgICAgIHZhbD1taWQ7IGNudD0wOwogICAgICAgIGlmKGNoZWNrKCkpIGFucz1taWQsIHI9bWlkLTE7CiAgICAgICAgZWxzZSBsPW1pZCsxOwogICAgfQogICAgY291dDw8YW5zOwogICAgcmU7Cn0KCg==