Pagini recente » Cod sursa (job #504018) | Cod sursa (job #164876) | Cod sursa (job #298664) | Cod sursa (job #3254940) | Cod sursa (job #1602045)
#include <fstream>
using namespace std;
struct pozitie
{
int lin,col;
};
pozitie coada[10009];
int N,M,pr,ul;
int dlin[8]={-1,-1,-1,0,0,1,1,1};
int dcol[8]={-1,0,1,-1,1,-1,0,1};
int R[102][102],J[102][102];
int RLIN,RCOL,JLIN,JCOL;
char s[102];
int main ()
{
int i,j,l,c;
int c1,l1,tmin;
ifstream fin("rj.in");
ofstream fout("rj.out");
fin>>N>>M;
fin.get();
for(i=1;i<=N;i++)
{
fin.get(s,M+1,'\n');
fin.get();
for(j=0;j<=M-1;j++)
{
if(s[j]=='X')
{
R[i][j+1]=-1;
J[i][j+1]=-1;
}
if(s[j]=='R')
{
RLIN=i;
RCOL=j+1;
}
if(s[j]=='J')
{
JLIN=i;
JCOL=j+1;
}
}
}
//Umplerea matricei R
coada[1].lin=RLIN;
coada[1].col=RCOL;
pr=1;
ul=1;
R[RLIN][RCOL]=1;
while(pr<=ul)
{
l=coada[pr].lin;
c=coada[pr].col;
for(int k=0;k<=7;k++)
{
l1=l+dlin[k];
c1=c+dcol[k];
if(l1>=1 && l1<=N && c1>=1 && c1<=M && R[l1][c1]==0)
{
R[l1][c1]=1+R[l][c];
ul++;
coada[ul].lin=l1;
coada[ul].col=c1;
}
}
pr++;
}
//Umplerea J
coada[1].lin=JLIN;
coada[1].col=JCOL;
pr=1;
ul=1;
J[JLIN][JCOL]=1;
while(pr<=ul)
{
l=coada[pr].lin;
c=coada[pr].col;
for(int k=0;k<=7;k++)
{
l1=l+dlin[k];
c1=c+dcol[k];
if(l1>=1 && l1<=N && c1>=1 && c1<=M && J[l1][c1]==0)
{
J[l1][c1]=1+J[l][c];
ul++;
coada[ul].lin=l1;
coada[ul].col=c1;
}
}
pr++;
}
tmin=M*N;
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
if(R[i][j]==J[i][j] && R[i][j]!=-1 && R[i][j]>0 && R[i][j]<tmin )
{
tmin=R[i][j];
l1=i;
c1=j;
}
}
}
fout<<tmin<<<<" "<<l1<<" "<<c1;
fin.close();
fout.close();
return 0;
}