#include<bits/stdc++.h>
using namespace std;
int f[100000],n,m;
char mapp[100000];
int find(int k){
if(f[k]==k) return k;
else return f[k]=find(f[k]);
}
int merge(int x,int y){
f[find(x)]=find(y);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
f[i]=i;
cin>>mapp[i];
}
for(int i=1;i<n;i++){
int x,y;
cin>>x>>y;
if(mapp[x]==mapp[y]){
merge(x,y);
}
}
int a,b;
char c;
while(m--){
cin>>a>>b>>c;
if(find(a)==find(b)&&mapp[a]!=c) cout<<0;
else cout<<1;
}
return 0;
}