Pagini recente » Cod sursa (job #3219154) | Cod sursa (job #2955859) | Cod sursa (job #2589725) | Cod sursa (job #997854) | Cod sursa (job #3158201)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int R[105][105],J[105][105],n,m;
string s;
queue<pair<int,int>> q;
int dx[] = {-1,-1,0,1,1,1,0,-1};
int dy[] = {0,1,1,1,0,-1,-1,-1};
int Nauntru(int x, int y)
{
if(1<=x && 1<=y && x<=n && y<=m)return 1;
return 0;
}
void Lee(int c[105][105])
{
int x,y,i,j,k;
while(!q.empty())
{
i=q.front().first;
j=q.front().second;
for(k=0;k<8;k++)
{
x=i+dx[k];
y=j+dy[k];
if(Nauntru(x,y) && (c[x][y]==0 || c[x][y]>c[i][j]+1))
{
c[x][y]=c[i][j]+1;
q.push(make_pair(x,y));
}
}
q.pop();
}
}
int main()
{
int i,j,x,y,c=1e9;
fin>>n>>m;
fin.ignore();
for(i=1;i<=n;i++)
{
getline(fin,s);
for(j=0;j<m;j++)
{
if(s[j]=='X')R[i][j+1]=J[i][j+1]=-1;
else if(s[j]=='R')
{
R[i][j+1]=1;
q.push(make_pair(i,j+1));
J[i][j+1]=0;
}
else if(s[j]=='J')
{
J[i][j+1]=1;
x=i;y=j+1;
R[i][j+1]=0;
}
}
s.clear();
}
Lee(R);
q.push(make_pair(x,y));
Lee(J);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if((R[i][j]==J[i][j] || R[i][j]+1==J[i][j]) && c>R[i][j] && R[i][j]!=-1 && R[i][j]!=0)
{
x=i;y=j;c=R[i][j];
}
fout<<c<<" "<<x<<" "<<y;
/*
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
fout<<R[i][j]<<" ";
fout<<"\n";
}
fout<<"\n";
fout<<"\n";
fout<<"\n";
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
fout<<J[i][j]<<" ";
fout<<"\n";
}
*/
return 0;
}