Pagini recente » Cod sursa (job #1971138) | Cod sursa (job #953882) | Cod sursa (job #1173629) | Cod sursa (job #1138593) | Cod sursa (job #1372297)
#include<iostream>
#include<fstream>
#include<string.h>
#include<queue>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int i,n,m,j,y,x,xx,yy,xf,yf,a[105][105],b[105][105],mini=3200000,X,Y;
queue<int> Qx;
queue<int> Qy;
void lee(int a[105][105],int x,int y)
{
Qx.push(x);Qy.push(y);
while(Qx.empty()!=1)
{xx=Qx.front();yy=Qy.front();
if(a[xx-1][yy]==0||a[xx-1][yy]>a[xx][yy]+1){a[xx-1][yy]=a[xx][yy]+1;
Qx.push(xx-1);
Qy.push(yy);}
if(a[xx+1][yy]==0||a[xx+1][yy]>a[xx][yy]+1){a[xx+1][yy]=a[xx][yy]+1;
Qx.push(xx+1);
Qy.push(yy);}
if(a[xx][yy-1]==0||a[xx][yy-1]>a[xx][yy]+1){a[xx][yy-1]=a[xx][yy]+1;
Qx.push(xx);
Qy.push(yy-1);}
if(a[xx][yy+1]==0||a[xx][yy+1]>a[xx][yy]+1){a[xx][yy+1]=a[xx][yy]+1;
Qx.push(xx);
Qy.push(yy+1);}
Qx.pop();Qy.pop();
}
a[x][y]=0;
}
int main()
{
char *c;
c=new char[105];
f>>n>>m;
for(i=1;i<=n;i++)
{f.get();
f.get(c,105);
for(j=0;j<m;j++)
if(c[j]=='X'){a[i][j+1]=-1;b[i][j+1]=-1;}
else if(c[j]=='R'){x=i;y=j+1;}
else if(c[j]=='J'){xf=i;yf=j+1;}
delete(c);
}
for(i=0;i<=m+1;i++){a[0][i]=-1;
a[n+1][i]=-1;
b[0][i]=-1;
b[n+1][i]=-1;}
for(i=0;i<=n+1;i++){a[i][0]=-1;
a[i][m+1]=-1;
b[i][0]=-1;
b[i][m+1]=-1;}
lee(a,x,y);
lee(b,xf,yf);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]>0&&a[i][j]==b[i][j])
if(a[i][j]<mini){mini=a[i][j];
X=i;Y=j;}
g<<mini<<' '<<X<<' '<<Y<<'\n';
f.close();
g.close();
return 0;}