Pagini recente » Cod sursa (job #2348977) | Cod sursa (job #449009) | Cod sursa (job #1630484) | Cod sursa (job #534157) | Cod sursa (job #2495549)
#include <iostream>
#include <cstdio>
#include<fstream>
using namespace std;
short int a[105][105],ql[10005],qc[10005],dc[8]={1,1,1,0,0,-1,-1,-1},dl[8]={1,-1,0,1,-1,1,-1,0};
short int a2[105][105];
ifstream f("rj.in");
ofstream g("rj.out");
int main()
{
short int n,m,i,j,xR,yR,xJ,yJ,first,last,l,c,k,xf=100*100+69,yf=100*100+69,t=100*100+69;
char b;
f>>n>>m;
b=getchar();
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=a2[i][0]=a2[i][m+1]=-1;
for(j=0;j<=m+1;j++)
a[0][j]=a[n+1][j]=a2[0][j]=a2[n+1][j]=-1;
for(i=1;i<=n;i++)
{
b=getchar();
for(j=1;b!='\n';j++)
{
if(b=='R')
{
xR=i;
yR=j;
}
if(b=='J')
{
xJ=i;
yJ=j;
}
if(b=='X')
a[i][j]=a2[i][j]=-1;
b=getchar();
}
}
first=last=1;
ql[1]=xR;
qc[1]=yR;
a[xR][yR]=1;
while(first<=last)
{
l=ql[first];
c=qc[first];
for(k=0;k<=7;k++)
if(a[l+dl[k]][c+dc[k]]==0)
{
a[l+dl[k]][c+dc[k]]=a[l][c]+1;
last++;
ql[last]=l+dl[k];
qc[last]=c+dc[k];
}
first++;
}
first=last=1;
ql[first]=xJ;
qc[first]=yJ;
a2[xJ][yJ]=1;
while(first<=last)
{
l=ql[first];
c=qc[first];
for(k=0;k<=7;k++)
if(a2[l+dl[k]][c+dc[k]]==0)
{
a2[l+dl[k]][c+dc[k]]=a2[l][c]+1;
last++;
ql[last]=l+dl[k];
qc[last]=c+dc[k];
}
first++;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==a2[i][j] && a[i][j]>0)
if(t>a[i][j] || (t==a[i][j] && i<xf) || (t==a[i][j] && i==xf && j<yf))
{
xf=i;
yf=j;
t=a[i][j];
}
g<<t<<" "<<xf<<" "<<yf;
return 0;
}