Pagini recente » Cod sursa (job #2462335) | Cod sursa (job #1709535) | Cod sursa (job #2094916) | Cod sursa (job #2843602) | Cod sursa (job #1375082)
#include<iostream>
#include<string.h>
#include<queue>
#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
queue<int> qx;
queue<int> qy;
int main()
{
int x,x1,y,y1,xx,yy,i,j,m,n,mat[100][100];
char v[100];
f>>m>>n;
f.get();
for(i=1; i<=n; i++)
{
f.getline(v,m+1);
for(j=0;j<strlen(v); j++)
{
if( v[j]== 'X') mat[i][j+1]=-1;
if( v[j] == 'R') {x=i;y=j;}
if(v[j] == 'J') {x1=i;y1=j;}
}}
for(i=0;i<=n+1;i++){
mat[i][0]=-1;
mat[i][n+1]=-1;
}
for(i=0;i<=n+1;i++){
mat[0][i]=-1;
mat[n+1][i]=-1;
}
qx.push(x);
qy.push (y);
while(xx!=x1 || yy!=y1)
{
xx=qx.front();
yy=qy.front();
if(mat[xx-1][yy]==0|| mat[xx-1][yy]>mat[xx][yy]+1){
mat[xx-1][yy]=mat[xx][yy]+1;
qx.push(xx-1);
qy.push(yy);
}
if(mat[xx+1][yy]==0||mat[xx+1][yy]>mat[xx][yy]+1){
mat[xx+1][yy]=mat[xx][yy]+1;
qx.push(xx+1);
qy.push(yy);
}
if(mat[xx][yy-1]==0||mat[xx][yy-1]>mat[xx][yy]+1){
mat[xx][yy-1]=mat[xx][yy]+1;
qx.push(xx);
qy.push(yy-1);
}
if(mat[xx][yy+1]==0||mat[xx][yy+1]>mat[xx][yy]+1){
mat[xx][yy+1]=mat[xx][yy]+1;
qx.push(xx);
qy.push(yy+1);
}
if(mat[xx+1][yy+1]==0||mat[xx+1][yy+1]>mat[xx][yy]+1){
mat[xx+1][yy+1]=mat[xx][yy]+1;
qx.push(xx+1);
qy.push(yy+1);
}
if(mat[xx-1][yy+1]==0||mat[xx-1][yy+1]>mat[xx][yy]+1){
mat[xx-1][yy+1]=mat[xx][yy]+1;
qx.push(xx-1);
qy.push(yy+1);
}
if(mat[xx+1][yy-1]==0||mat[xx+1][yy-1]>mat[xx][yy]+1){
mat[xx+1][yy-1]=mat[xx][yy]+1;
qx.push(xx+1);
qy.push(yy-1);
}
if(mat[xx-1][yy-1]==0||mat[xx-1][yy-1]>mat[xx][yy]+1){
mat[xx-1][yy+1]=mat[xx][yy]+1;
qx.push(xx-1);
qy.push(yy-1);
}
qx.pop();
qy.pop();
}
for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(mat[i][j]==mat[x1][y1]/2)g<<i<<" "<<j<<" ";
g<<mat[x1][y1]/2;
f.close();
g.close();
return 0;
}