Pagini recente » Cod sursa (job #2891956) | Cod sursa (job #1889615) | Cod sursa (job #731138) | Cod sursa (job #510939) | Cod sursa (job #1372152)
#include<iostream>/*romeo si julieta*/
#include<fstream>
#include<queue>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int M[110][110];
int main()
{
int x,y,xx,yy,n,i,j,m,rx,ry,jx,jy,dm,sem=1;
char b[110];
f>>n>>m;f.get();
for (i=1;i<=n;i++)
{
f.get(b,110);
f.get();
for (j=1;j<=m;j++)
if (b[j-1]=='X') M[i][j]=0;
else
if (b[j-1]=='R') {rx=i;ry=j;M[i][j]=1;}
else
if (b[j-1]=='J') {jx=i;jy=j;M[i][j]=-1;}
else M[i][j]=-1;
}
x=rx;y=ry;
queue<int>qx;
queue<int>qy;
qx.push(x);
qy.push(y);
while(qx.empty()!=true)
{
xx=qx.front();
yy=qy.front();
if(M[xx-1][yy]==-1||M[xx-1][yy]>M[xx][yy]+1)
{
M[xx-1][yy]=M[xx][yy]+1;
qx.push(xx-1);
qy.push(yy);
}
if(M[xx][yy+1]==-1||M[xx][yy+1]>M[xx][yy]+1)
{
M[xx][yy+1]=M[xx][yy]+1;
qx.push(xx);
qy.push(yy+1);
}
if(M[xx+1][yy]==-1||M[xx+1][yy]>M[xx][yy]+1)
{
M[xx+1][yy]=M[xx][yy]+1;
qx.push(xx+1);
qy.push(yy);
}
if(M[xx][yy-1]==-1||M[xx][yy-1]>M[xx][yy]+1)
{
M[xx][yy-1]=M[xx][yy]+1;
qx.push(xx);
qy.push(yy-1);
}
if(M[xx-1][yy-1]==-1||M[xx-1][yy]>M[xx][yy]+1)
{
M[xx-1][yy-1]=M[xx][yy]+1;
qx.push(xx-1);
qy.push(yy-1);
}
if(M[xx-1][yy+1]==-1||M[xx-1][yy]>M[xx][yy]+1)
{
M[xx-1][yy+1]=M[xx][yy]+1;
qx.push(xx-1);
qy.push(yy+1);
}
if(M[xx+1][yy+1]==-1||M[xx-1][yy]>M[xx][yy]+1)
{
M[xx+1][yy+1]=M[xx][yy]+1;
qx.push(xx+1);
qy.push(yy+1);
}
if(M[xx+1][yy-1]==-1||M[xx-1][yy]>M[xx][yy]+1)
{
M[xx+1][yy-1]=M[xx][yy]+1;
qx.push(xx+1);
qy.push(yy-1);
}
qx.pop();
qy.pop();
}
dm=(M[jx][jy]+1)/2;
g<<dm<<" ";
x=jx;y=jy;
while(sem==1)
{
if(M[x][y]==dm){g<<x<<" "<<y;sem=0;}
if(M[x-1][y]==M[x][y]-1)x=x-1;
if(M[x][y+1]==M[x][y]-1)y=y+1;
if(M[x+1][y]==M[x][y]-1)x=x+1;
if(M[x][y-1]==M[x][y]-1)y=y-1;
if(M[x-1][y-1]==M[x][y]-1){x=x-1;y=y-1;}
if(M[x-1][y+1]==M[x][y]-1){x=x-1;y=y+1;}
if(M[x+1][y+1]==M[x][y]-1){x=x+1;y=y+1;}
if(M[x+1][y-1]==M[x][y]-1){x=x+1;y=y-1;}
}
return 0;
}