#include<iostream>
#include<cstdio>
#include<queue>
#include<vector>
#define M 30
using namespace std;
int list[M][M];
int main()
{
register int t,r,q,i,j,k,h,a,b;
char src[M],tgt[M];
int D[M],color[M],path[M],P[M];
queue<int>Q;
//freopen("in.txt","r",stdin);
scanf("%d",&t);
while(t--)
{
scanf("%d%d\n",&r,&q);
for(i=0;i<M;i++)
for(j=0;j<M;j++)
list[i][j]=0;
for(i=0;i<r;i++)
{
scanf("%s%s\n",src,tgt);
a=src[0]-65,b=tgt[0]-65;
list[a][b]=list[b][a]=1;
}
for(k=0;k<q;k++)
{
scanf("%s%s\n",src,tgt);
a=src[0]-65,b=tgt[0]-65;
for(i=0;i<M;i++)
color[i]=0;
Q.push(a);D[a]=0;color[a]=1;
for(;;)
{
h=Q.front();
for(i=0;i<M;i++)
{
if(list[h][i])
{
if(color[i]==0)
{
color[i]=1;
D[i]=D[h]+1;
path[i]=h;
if(i==b)break;
Q.push(i);
}
}
}
if(i==b)break;
Q.pop();
color[h]=2;
}
while(!Q.empty())
Q.pop();
h=0;
printf("%c",a+65);
while(b!=a)
{
P[h++]=b;
b=path[b];
}
for(j=h-1;j>=0;j--)
printf("%c",P[j]+65);
printf("\n");
}
if(t)
printf("\n");
}
return 0;
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.