#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;
}
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;
}
浙公网安备 33010602011771号