Pagini recente » Cod sursa (job #2133815) | Cod sursa (job #2341568) | Cod sursa (job #1889231) | Cod sursa (job #235470) | Cod sursa (job #1671769)
#include <iostream>
#include<fstream>
#include<deque>
#include<string>
using namespace std;
string s;
deque<int> l,c;
int n,m,i,j,r[105][105],ju[105][105],r1,r2,j1,j2,li,lf,ci,cf,x,y,tmin,mn=(1<<30);
int main()
{
ifstream f("rj.in");
ofstream g("rj.out");
int d1[]={-1,-1,-1,0,0,1,1,1};
int d2[]={-1,0,1,-1,1,-1,0,1};
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
getline(f,s);
for(j=0;j<=m-1;j++)
{
if(s[j]=='X')
{
r[i][j+1]=-1;
ju[i][j+1]=-1;
}
else
if(s[j]=='R')
{
r1=i;
r2=j+1;
r[r1][r2]=1;
}
else
if(s[j]=='J')
{
j1=i;
j2=j+1;
ju[j1][j2]=1;
}
}
}
l.push_back(r1);
c.push_back(r2);
while(!l.empty())
{
li=l.front();
ci=c.front();
l.pop_front();
c.pop_front();
if(li!=0 && ci!=0 && li!=n+1&&ci!=m+1)
for(i=0;i<8;i++)
{
lf=li+d1[i];
cf=ci+d2[i];
if(r[lf][cf]==0)
{
r[lf][cf]=r[li][ci]+1;
l.push_back(lf);
c.push_back(cf);
}
}
}
l.push_back(j1);
c.push_back(j2);
while(!l.empty())
{
li=l.front();
ci=c.front();
l.pop_front();
c.pop_front();
if(li!=0 && ci!=0 && li!=n+1&&ci!=m+1)
for(i=0;i<8;i++)
{
lf=li+d1[i];
cf=ci+d2[i];
if(ju[lf][cf]==0)
{
ju[lf][cf]=ju[li][ci]+1;
l.push_back(lf);
c.push_back(cf);
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(r[i][j]==ju[i][j]&& r[i][j]<mn &&r[i][j]!=-1&&r[i][j]!=0)
{
tmin=r[i][j];
x=i;
y=j;
}
}
g<<tmin<<' '<<x<<' '<<y;
return 0;
}