/*
题目:给出两种图形的像素表示方法,现在给出其中一种,求另一种的像素表示方法。
分析:BFS的思想
*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int X = 15;
struct node{
int x,y;
};
int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};//右上左下的方向偏移量
char d[] = "RTLB";
bool use[X][X],map[X][X];
vector<int> ans[200];
int pos;
bool check(int x,int y){ //判断是否符合
if(x<1||y<1||x>10||y>10) //越界
return false;
if(!map[x][y]||use[x][y]) //若不为黑色或者已经访问过的
return false;
return true;
}
void bfs(int sx,int sy){//给出黑色的位置,求字母的表示方法,上下左右的储存方式用向量vector来储存
memset(use,false,sizeof(use));
pos = 0;
node cur,temp;
cur.x = sx;
cur.y = sy;
queue<node> q;
q.push(cur);
use[sx][sy] = true;
while(!q.empty()){
cur = q.front();
q.pop();
for(int i=0;i<4;i++){
temp.x = cur.x+dir[i][0];
temp.y = cur.y+dir[i][1];
if(check(temp.x,temp.y)){
q.push(temp);
use[temp.x][temp.y] = true;
ans[pos].push_back(i);
}
}
pos++;
}
int len;
cout<<sx<<" "<<sy<<endl;
for(int i=0;i<pos;i++){
len = ans[i].size();
for(int j=0;j<len;j++)
cout<<d[ans[i][j]];
if(i!=pos-1)
cout<<","<<endl;
else
cout<<"."<<endl;
}
}
void bfs_2(int sx,int sy){ //给出字母的表示方法,求坐标的表示方法
node cur,temp;
queue<node> q;
memset(map,false,sizeof(map));
cur.x = sx;
cur.y = sy;
q.push(cur);
char s[10];
int len,cnt = 1;
while(q.size()){
cur = q.front();
map[cur.x][cur.y] = true;
q.pop();
scanf("%s",s);
len = strlen(s);
if(len==1)
continue;
cnt += len-1;
for(int i=0;i<len-1;i++){
if(s[i]=='R'){
temp.x = cur.x+1;
temp.y = cur.y;
q.push(temp);
}
else if(s[i]=='T'){
temp.x = cur.x;
temp.y = cur.y+1;
q.push(temp);
}
else if(s[i]=='L'){
temp.x = cur.x-1;
temp.y = cur.y;
q.push(temp);
}
else{
temp.x = cur.x;
temp.y = cur.y-1;
q.push(temp);
}
}
}
cout<<cnt<<endl;
for(int i=0;i<X;i++) //先按x的由小到大输出,若相同再按y的由小到大输出
for(int j=0;j<X;j++)
if(map[i][j])
cout<<i<<" "<<j<<endl;
}
void input(){ //输入函数
int x,y,z;
cin>>x;
if(getchar()=='\n'){ //如果第一行只有一个数字输入,表示输入的是用坐标的方式来表示像素
int sx = 10000,sy;
memset(map,false,sizeof(map));
for(int i=0;i<x;i++){
scanf("%d%d",&y,&z);
map[y][z] = true;
if(y<sx){
sx = y;
sy = z;
}
}
bfs(sx,sy);
}
else{
scanf("%d",&y);
bfs_2(x,y);
}
}
int main(){
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
input();
return 0;
}