Pagini recente » Cod sursa (job #2423216) | Cod sursa (job #1505452) | Cod sursa (job #1164561) | Cod sursa (job #2707215) | Cod sursa (job #2338218)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
char s[110];
int i,j,a[101][101],b[101][101],n,m,rx,ry,jx,jy,pr,ul,k,is,js,ss=INT_MAX;
int dx[]={-1,-1,-1,0,1,1,1,0};
int dy[]={-1,0,1,1,1,0,-1,-1};
struct pos
{
int x,y;
};
pos q[1010];
void rlee()
{
pr=ul=1;
a[rx][ry]=1;
q[ul].x=rx;
q[ul].y=ry;
while(pr<=ul)
{
i=q[pr].x;
j=q[pr].y;
pr++;
for(k=0;k<=7;k++)
{
if(a[i+dx[k]][j+dy[k]]==0)
{
ul++;
q[ul].x=i+dx[k];
q[ul].y=j+dy[k];
a[i+dx[k]][j+dy[k]]=a[i][j]+1;
}
}
}
}
void jlee()
{
pr=ul=1;
b[jx][jy]=1;
q[ul].x=jx;
q[ul].y=jy;
while(pr<=ul)
{
i=q[pr].x;
j=q[pr].y;
pr++;
for(k=0;k<=7;k++)
{
if(b[i+dx[k]][j+dy[k]]==0)
{
ul++;
q[ul].x=i+dx[k];
q[ul].y=j+dy[k];
b[i+dx[k]][j+dy[k]]=b[i][j]+1;
}
}
}
}
int main()
{
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.getline(s,110);
for(j=0;j<=m-1;j++)
if(s[j]==' ')
a[i][j+1]=0;
else
if(s[j]=='X')
a[i][j+1]=-1;
else
if(s[j]=='R')
{
rx=i;
ry=j+1;
}
else
{
jx=i;
jy=j+1;
}
}
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=-1;
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]=-1;
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
b[i][j]=a[i][j];
rlee();
jlee();
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j] && a[i][j]>1 && a[i][j]<=ss)
{
ss=a[i][j];
is=i;
js=j;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==ss && i<is)
{
is=i;
js=j;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==ss && j<js)
{
is=i;
js=j;
}
fout<<ss<<" "<<is<<" "<<js;
}