#include <bits/stdc++.h>
#define pb push_back
using namespace std;

int n,m,q,scc,gp[10005];
bool vis[10005],vis2[10005];
vector<int>G[10005],R[10005],ts;

void dfs(int u) {
	vis[u]=1;
	for (int v:G[u])
		if (!vis[v]) dfs(v);
	ts.pb(u);
}

void dfs2(int u,int k) {
	vis2[u]=1;
	gp[u]=k;
	for (int v:R[u])
		if (!vis2[v]) dfs2(v,k);
}

int main() {
	cin>>n>>m;
	for (int i=0;i<m;i++) {
		int u,v; cin>>u>>v;
		G[u].pb(v);
		R[v].pb(u);
	}
	for (int i=0;i<n;i++)
		if (!vis[i]) dfs(i);
	for (auto it=ts.rbegin();it!=ts.rend();it++)
		if (!vis2[*it]) dfs2(*it,scc++);
	cin>>q;
	for (int i=0;i<q;i++) {
		int u,v; cin>>u>>v;
		cout<<(gp[u]==gp[v])<<'\n';
	}
}
