#include<stdio.h>

int n,m,q,tmp1,tmp2;
char a[100][100],used[100],queue[100],d[100];
int aq[100][2];
char t;

void init(){
  int i;
  scanf("%d %d",&n,&m);
  for(i=1;i<=m;i++){
   scanf("%d %d %c",&tmp1,&tmp2,&t);
   if(t=='0'){a[tmp1][tmp2]='2';a[tmp2][tmp1]='2';}
   else {a[tmp1][tmp2]='1';a[tmp2][tmp1]='1';}
  }
  scanf("%d",&q);
  for(i=1;i<=q;i++)scanf("%d %d",&aq[i][1],&aq[i][2]);
}

void solve(int l,int r){

  used[l]=1;queue[0]=0;
  queue[++queue[0]]=l;
  int temp=1,i;

  for(i=0;i<n;i++){
    if(a[l][i]!='1')d[i]=-1;
    if(a[l][i]!='2')d[i]=1;
  }
  
  while(temp!=queue[0]+1){
    for(i=0;i<n;i++)
      if(a[queue[temp]][i]!='\0' && !used[i]){
        queue[++queue[0]]=i;
        if(a[queue[temp]][i]=='1')d[i]=-d[queue[temp]];
        if(a[queue[temp]][i]=='2')d[i]=d[queue[temp]];
        if(i==r)break;
      }
    temp++;
  }
}

int main(){
 init();
 solve(aq[1][1],aq[1][2]);
int i;
for(i=0;i<n;i++)printf("%d ",d[i]);
return 0;
}

