Pagini recente » Cod sursa (job #316044) | Cod sursa (job #116853) | Cod sursa (job #1954484) | Cod sursa (job #1866543) | Cod sursa (job #1376976)
#include<iostream>
#include<fstream>
#include<queue>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
queue<int>qx;
queue<int>qy;
int r[150][150];
void sub(int x,int y,int nr,int v[150][150])
{if(qx.empty()==true)return;
nr=v[x][y]+1;
if(v[x+1][y]==0){qx.push(x+1);
qy.push(y);
v[x+1][y]=nr;}
else if(v[x+1][y]==-4)v[x+1][y]=nr;
if(v[x-1][y]==0){qx.push(x-1);
qy.push(y);
v[x-1][y]=nr;}
else if(v[x-1][y]==-4)v[x-1][y]=nr;
if(v[x][y+1]==0){qx.push(x);
qy.push(y+1);
v[x][y+1]=nr;}
else if(v[x][y+1]==-4)v[x][y+1]=nr;
if(v[x][y-1]==0){qx.push(x);
qy.push(y-1);
v[x][y-1]=nr;}
else if(v[x][y-1]==-4)v[x][y-1]=nr;
if(v[x+1][y+1]==0){qx.push(x+1);
qy.push(y+1);
v[x+1][y+1]=nr;}
else if(v[x+1][y+1]==-4)v[x+1][y+1]=nr+1;
if(v[x+1][y-1]==0){qx.push(x+1);
qy.push(y-1);
v[x+1][y-1]=nr;}
else if(v[x+1][y-1]==-4)v[x+1][y-1]=nr+1;
if(v[x-1][y-1]==0){qx.push(x-1);
qy.push(y-1);
v[x-1][y-1]=nr;}
else if(v[x-1][y-1]==-4)v[x-1][y-1]=nr+1;
if(v[x-1][y+1]==0){qx.push(x-1);
qy.push(y+1);
v[x-1][y+1]=nr;}
else if(v[x-1][y+1]==-4)v[x-1][y+1]=nr+1;
qx.pop();
qy.pop();
sub(qx.front(),qy.front(),nr,v);
}
int main()
{int n,m,i,j,x1,y1,x2,y2;
char s[150];
f>>n>>m;
for(i=0;i<=n+1;i++)r[i][0]=-2;
for(i=0;i<=n+1;i++)r[i][m+1]=-2;
for(i=0;i<=m+1;i++)r[0][i]=-2;
for(i=0;i<=m+1;i++)r[n+1][i]=-2;
for(i=1;i<=n;i++){f.get();
f.get(s,160);
for(j=1;j<=m;j++){if(s[j-1]=='X')r[i][j]=-2;
if(s[j-1]=='R'){r[i][j]=1;
x1=i;
y1=j;}
if(s[j-1]=='J'){r[i][j]=-4;
x2=i;
y2=j;}
}
}
qx.push(x1);
qy.push(y1);
sub(x1,y1,0,r);
int min;
min=r[x2][y2]/2;
g<<min;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)if(r[i][j]==min)g<<" "<<i<<" "<<j;
//qx.push(x2);
//qy.push(y2);
//sub(x2,y2,0,r);
//r[x1][y1]=-1;
//r[x2][y2]=-1;
//ju[x1][y1]=-1;
//ju[x2][y2]=-1;
//for(i=1;i<=n;i++)
// for(j=1;j<=m;j++)if(r[i][j]==ju[i][j])if(min>r[i][j] && r[i][j]>0){min=r[i][j];
// x1=i;
// y1=j;}
//for(i=1;i<=n;i++){g<<endl;
// for(j=1;j<=m;j++)g<<" "<<r[i][j];}
//g<<min<<" "<<x1<<" "<<y1;
return 0;}