Pagini recente » Cod sursa (job #1687128) | Cod sursa (job #944459) | Cod sursa (job #2065816) | Cod sursa (job #2519918) | Cod sursa (job #1579675)
#include <stdio.h>
#include <ctype.h>
int dx[] = {1,0,0,-1};
int dy[] = {0,1,-1,0};
struct element
{
int l,c;
};
element coada[1000000];
int b = 0, e = 0;
void push(int val1, int val2)
{
coada[e].l = val1;
coada[e++].c = val2;
}
void pop()
{
b++;
}
int n,m;
int hartar[100][100];
int hartaj[100][100];
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
char s[100];
int i,j,ic,jc,ji,jj,dir;
scanf("%d %d\n",&n,&m);
for(i = 0; i < n ; ++i)
{
gets(s);
for(j = 0; j < m; ++j)
{
if(isspace(s[j]))
hartar[i][j] = hartaj[i][j] = 0;
else
if(s[j] == 'X')
hartar[i][j] = hartaj[i][j] = -1;
else
if(s[j] == 'R')
push(i,j);
else
{
ji = i;
jj = j;
}
}
}
while(e - b > 0)
{
i = coada[b].l;
j = coada[b].c;
pop();
for(dir = 0; dir < 4; ++dir)
{
ic = i + dx[dir];
jc = j + dy[dir];
if(i >= 0 && j >= 0 && i < n && j < m && hartar[ic][jc] == 0)
{
hartar[ic][jc] = hartar[i][j] + 1;
push(ic,jc);
}
}
}
push(ji,jj);
while(e - b > 0)
{
i = coada[b].l;
j = coada[b].c;
pop();
for(dir = 0; dir < 4; ++dir)
{
ic = i + dx[dir];
jc = j + dy[dir];
if(i >= 0 && j >= 0 && i < n && j < m && hartaj[ic][jc] == 0)
{
hartaj[ic][jc] = hartaj[i][j] + 1;
push(ic,jc);
}
}
}
int mini,minj,minim = 101 * 101;
for(i = 0; i < n; ++i){
for(j = 0; j < m ; ++j)
if(hartar[i][j] == hartaj[i][j] && hartar[i][j] < minim && hartar[i][j] > 0)
{
mini = i;
minj = j;
minim = hartar[i][j];
}
}
printf("%d %d %d\n",minim,mini+1,minj+1);
return 0;
}