Pagini recente » Cod sursa (job #370933) | Cod sursa (job #2113757) | Cod sursa (job #2872090) | Cod sursa (job #2791856) | Cod sursa (job #1999087)
#include<fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[102][102],b[102][102];
pair <int,int> coada1[10001],coada2[10001];
int main()
{
int i,j,n,m,lin[9]= {0,0,0,1,-1,1,-1,1,-1},col[9]= {0,1,-1,0,0,1,1,-1,-1},k=1,l=1,raspuns1,raspuns2,ok=0,raspuns3,min1=10000000,linia,coloana;
char c;
fin>>n>>m;
fin.get(c);
for(i=1; i<=n+2; i++)
{
for(j=1; j<=m+2; j++)
{
fin.get(c);
if(c!='\n')
if(c=='X')
{
a[i][j]=-1;
b[i][j]=-1;
}
else if(c=='R')
{
coada1[1].first=i;
coada1[1].second=j;
a[i][j]=1;
}
else if(c=='J')
{
coada2[1].first=i;
coada2[1].second=j;
b[i][j]=1;
}
if(c=='\n')
break;
}
}
for(j=0; j<=m+1; j++)
{
a[0][j]=-1;
a[n+1][j]=-1;
b[0][j]=-1;
b[n+1][j]=-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;
}
while(k<=l)
{
for(i=1; i<=8; i++)
if(a[coada1[k].first+lin[i]][coada1[k].second+col[i]]==0)
{
l++;
a[coada1[k].first+lin[i]][coada1[k].second+col[i]]=a[coada1[k].first][coada1[k].second]+1;
coada1[l].first=coada1[k].first+lin[i];
coada1[l].second=coada1[k].second+col[i];
}
k++;
}
k=1;
l=1;
while(k<=l)
{
for(i=1; i<=8; i++)
if(b[coada2[k].first+lin[i]][coada2[k].second+col[i]]==0)
{
l++;
b[coada2[k].first+lin[i]][coada2[k].second+col[i]]=b[coada2[k].first][coada2[k].second]+1;
coada2[l].first=coada2[k].first+lin[i];
coada2[l].second=coada2[k].second+col[i];
}
k++;
}
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<min1)
{
min1=a[i][j];
linia=i;
coloana=j;
}
fout<<min1<<" "<<linia<<" "<<coloana;
}