Pagini recente » Cod sursa (job #1933839) | Cod sursa (job #2492814) | Cod sursa (job #735858) | Cod sursa (job #1373770) | Cod sursa (job #2244550)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
ifstream f("9-rj.in");
ofstream g("rj.out");
int R[101][101]={0},J[101][101]={0};
int m,n,i,j,l0r,c0r,l0j,c0j;
int l0,c0;
char c;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>noskipws>>c;
for(j=1;j<=m;j++)
{
f>>noskipws>>c;
if(c=='X')
R[i][j]=J[i][j]=-1;
else if(c=='R')
{
R[i][j]=1;
l0r=i;
c0r=j;
}
else if(c=='J')
{
J[i][j]=1;
l0j=i;
c0j=j;
}
}
}
c='R';
l0=l0r;
c0=c0r;
if(c=='R')
{
R[l0][c0]=1;
int lp,lu,cp,cu,CoadaL[10000]= {0},CoadaC[10000]= {0},lcrt,ccrt,lnext,cnext;
lu=lp=cu=cp=0;
lu++;
CoadaL[lu]=l0;
cu++;
CoadaC[cu]=c0;
while(lu!=lp)
{
lp++;
lcrt=CoadaL[lp];
cp++;
ccrt=CoadaC[cp];
for(i=1; i<=8; i++)
{
if(i==1) {lnext=lcrt+1;
cnext=ccrt;}
if(i==2) {lnext=lcrt-1;
cnext=ccrt;}
if(i==3) {lnext=lcrt;
cnext=ccrt+1;}
if(i==4) {lnext=lcrt;
cnext=ccrt-1;}
if(i==5)
{
lnext=lcrt+1;
cnext=ccrt+1;
}
else if(i==6)
{
lnext=lcrt+1;
cnext=ccrt-1;
}
else if(i==7)
{
lnext=lcrt-1;
cnext=ccrt+1;
}
else if(i==8)
{
lnext=lcrt-1;
cnext=ccrt-1;
}
if(lnext>=1 && cnext>=1 && lnext<=n && cnext<=m)
if(R[lnext][cnext]==0)
{
R[lnext][cnext]=R[lcrt][ccrt]+1;
lu++;
CoadaL[lu]=lnext;
cu++;
CoadaC[cu]=cnext;
}
}
}
}
c='J';
l0=l0j;
c0=c0j;
if(c=='J')
{
J[l0][c0]=1;
int lp,lu,cp,cu,CoadaL[10000]= {0},CoadaC[10000]= {0},lcrt,ccrt,lnext,cnext;
lu=lp=cu=cp=0;
lu++;
CoadaL[lu]=l0;
cu++;
CoadaC[cu]=c0;
while(lu!=lp)
{
lp++;
lcrt=CoadaL[lp];
cp++;
ccrt=CoadaC[cp];
for(i=1; i<=8; i++)
{
if(i==1) {lnext=lcrt+1;
cnext=ccrt;}
if(i==2) {lnext=lcrt-1;
cnext=ccrt;}
if(i==3) {lnext=lcrt;
cnext=ccrt+1;}
if(i==4) {lnext=lcrt;
cnext=ccrt-1;}
if(i==5)
{
lnext=lcrt+1;
cnext=ccrt+1;
}
else if(i==6)
{
lnext=lcrt+1;
cnext=ccrt-1;
}
else if(i==7)
{
lnext=lcrt-1;
cnext=ccrt+1;
}
else if(i==8)
{
lnext=lcrt-1;
cnext=ccrt-1;
}
if(lnext>=1 && cnext>=1 && lnext<=n && cnext<=m)
if(J[lnext][cnext]==0)
{
J[lnext][cnext]=J[lcrt][ccrt]+1;
lu++;
CoadaL[lu]=lnext;
cu++;
CoadaC[cu]=cnext;
}
}
}
}
int Dminim=100000,lfinis,cfinis;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(R[i][j]==J[i][j] && R[i][j]<Dminim && R[i][j]>=1)
{
Dminim=R[i][j];
lfinis=i;
cfinis=j;
}
g<<Dminim<<" "<<lfinis<<" "<<cfinis;
f.close();g.close();
}