#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define de(x) cout<<x<<" ";
#define sf(x) scanf("%d",&x);
#define Pu puts("");//并查集
const int N=1e5+10;
int f[N];
char arr[N];
int n,m;
int find(int x){
if(f[x]==x) return x;
return f[x]=find(f[x]);
}
void merge(int x,int y){
f[find(y)]=x;//根据输入,这里保证y大于x
}
int main(){
cin>>n>>m>>(arr+1);
for(int i=1;i<=n;i++){
f[i]=i;
}
int x,y;char z;
for(int i=1;i<=n-1;i++){
sf(x)sf(y)
if(arr[x]==arr[y]) merge(x,y);
}
for(int i=1;i<=n;i++) f[i]=find(i);
for(int i=1;i<=m;i++){
sf(x)sf(y)scanf(" %c",&z);
if(f[x]==f[y]&&arr[x]!=z) printf("0");
else printf("1");
}
return 0;
}