#include<iostream>
using namespace std;
#define maxn 100
#define INTMAX 20000000
int map[maxn+10][maxn+10];
int n,m,start,end;
void floyd(){
     int i,j,k;
     for(k = 1;k <= n;k++)
     for(i = 1;i <= n;i++)
     for(j = 1;j <= n;j++)
     if(map[i][j] > map[i][k]+map[k][j])
     map[i][j] = map[i][k]+map[k][j];
}
int main(){
    int i,j,num=1,p;
    cin>>n>>m;
    for(i = 1;i <= n;i++)
    for(j = 1;j<=n;j++)
    map[i][j] = INTMAX;
    int a,b =0;
    while (num <= m){
          cin>>a>>b;
          map[a]=1;
          map[b]=1;
          num++;
    }
    cin.clear();
    floyd();
    int tot;
    cin >> p;
    for (j=1;j<=p;j++){
        tot = 0;
        cin>>a>>b;
        for(int k=1;k<=n;k++)
        if(map[a] == map[a][k] + map[k])
        tot++;
        cout<<tot+2<<endl;
    }
    while (1);
    return 0;
}
posted on 2009-10-13 19:26  赫敏·格兰杰  阅读(176)  评论(0)    收藏  举报