Pagini recente » Monitorul de evaluare | Cod sursa (job #2958120) | Cod sursa (job #504102) | Cod sursa (job #315672) | Cod sursa (job #2120622)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct love
{
int x,y;
};
love r,l;
int i,j,n,m,d;
char a[101];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
queue<love>q;
bitset<101>o[101];
int f[102][102];
void rezultat()
{
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(f[i][j]==d){
fout<<i<<" "<<j;
j=m;
i=n;
}
}
}
}
void lee()
{o[r.x][r.y]=1;
q.push({r.x,r.y});
while(!q.empty())
{
int px=q.front().x;
int py=q.front().y;
for(i=0;i<=3;i++){
if(o[px+dx[i]][py+dy[i]]!=0)
continue;
if(f[px+dx[i]][py+dy[i]]!=0 && f[px+dx[i]][py+dy[i]]<f[px][py]+1)
continue;
if(px+dx[i]==0 || py+dy[i]==0 || px+dx[i]>n || py+dy[i]>m)
continue;
q.push({px+dx[i],py+dy[i]});
f[px+dx[i]][py+dy[i]]=f[px][py]+1;}
q.pop();
}
fout<<(f[l.x][l.y]+1)/2<<" ";
d=f[l.x][l.y]/2;
}
void cetire()
{
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++){
fin.get(a,101);
fin.get();
for(j=0;j<m;j++){
if(a[j]=='X'){
o[i][j+1]=1;
continue;
}
if(a[j]=='R'){
r.x=i;
r.y=j+1;
continue;
}
if(a[j]=='J'){
l.x=i;
l.y=j+1;
}
}
}
}
int main()
{cetire();
lee();
rezultat();
return 0;
}