Pagini recente » Cod sursa (job #292202) | Cod sursa (job #1847995) | Cod sursa (job #1129458) | Cod sursa (job #2717346) | Cod sursa (job #1721454)
#include <iostream>
#include <fstream>
#include <queue>
#define pii pair<int,int>
#define x first
#define y second
#include <string>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
queue<pair<int,int> >jul;
queue<pair<int,int> >rom;
pair<int,int>p;
int a[101][101];
int dx[]={-1,-1,-1,0,0,1,1,1};
int dy[]={-1,0,1,-1,1,-1,0,1};
int n,m,ok=0,c1,c2,tmin,nr;
int ins(int i,int j)
{
if(i<=n && i>=1 && j<=m && j>=1)
return 1;
return 0;
}
void vecinirom(int l,int col)
{
for(int d=0;d<=7;d++)
{
int ii=l+dx[d];
int jj=col+dy[d];
if(ins(ii,jj) && a[ii][jj]==0)
{
rom.push(make_pair(ii,jj));
a[ii][jj]=a[l][col]+1;
}
}
}
void vecinijul(int l,int col)
{
for(int d=0;d<=7;d++)
{
int ii=l+dx[d];
int jj=col+dy[d];
if(ins(ii,jj) && a[ii][jj]==0)
{
jul.push(make_pair(ii,jj));
a[ii][jj]=a[l][col]+1;
}
else if(ins(ii,jj) && a[ii][jj]==(a[l][col]+1))
{
ok=1;
tmin=a[ii][jj];
c1=ii;
c2=jj;
}
}
}
int main()
{
int i=0,j;
fin>>n>>m;
while(!fin.eof())
{
string s;
getline(fin,s);
for(j=0;j<=s.size();++j)
{
if(s[j]=='R')
{
a[i][j+1]=1;
rom.push(make_pair(i,j+1));
}
if(s[j]=='J')
{
a[i][j+1]=1;
jul.push(make_pair(i,j+1));
}
if(s[j]=='X')
a[i][j+1]=-1;
}
i++;
}
nr=2;
while(ok==0)
{
/*for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
fout<<a[i][j]<<" ";
fout<<'\n';
}
*/
pii p=rom.front();
while(a[p.x][p.y]+1==nr)
{
vecinirom(p.x,p.y);
rom.pop();
p=rom.front();
}
p=jul.front();
while(a[p.x][p.y]+1==nr)
{
vecinijul(p.x,p.y);
jul.pop();
p=jul.front();
}
nr++;
}
fout<<tmin<<" "<<c1<<" "<<c2;
return 0;
}