Pagini recente » Cod sursa (job #878361) | Cod sursa (job #3131842) | Cod sursa (job #288462) | Cod sursa (job #2478657) | Cod sursa (job #1022323)
#include <iostream>
#include <fstream>
#include <queue>
#include <iomanip>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
queue < pair < int,int > > coada;
#define MAX 102
void lee(int a[MAX][MAX])
{
int i,j;
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
if(!a[i-1][j-1])
{
a[i-1][j-1]=a[i][j]+1;
coada.push(make_pair(i-1,j-1));
}
if(!a[i-1][j])
{
a[i-1][j]=a[i][j]+1;
coada.push(make_pair(i-1,j));
}
if(!a[i][j-1])
{
a[i][j-1]=a[i][j]+1;
coada.push(make_pair(i,j-1));
}
if(!a[i-1][j+1])
{
a[i-1][j+1]=a[i][j]+1;
coada.push(make_pair(i-1,j+1));
}
if(!a[i+1][j-1])
{
a[i+1][j-1]=a[i][j]+1;
coada.push(make_pair(i+1,j-1));
}
if(!a[i][j+1])
{
a[i][j+1]=a[i][j]+1;
coada.push(make_pair(i,j+1));
}
if(!a[i+1][j])
{
a[i+1][j]=a[i][j]+1;
coada.push(make_pair(i+1,j));
}
if(!a[i+1][j+1])
{
a[i+1][j+1]=a[i][j]+1;
coada.push(make_pair(i+1,j+1));
}
}
}
int a[MAX][MAX],b[MAX][MAX];
char mat[MAX][MAX];
int i2[3],j2[3];
int main()
{
int i,j,n,m;
fin >> n >> m;
fin.get(mat[0][0]);
for(i=1;i<=n;i++)
{
mat[i][0]=1;
fin.getline(mat[i]+1,m+5);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(mat[i][j]=='R')
{
i2[1]=i;
j2[1]=j;
}
else if(mat[i][j]=='J')
{
i2[2]=i;
j2[2]=j;
}
else if(mat[i][j]=='X')
{
a[i][j]=b[i][j]=-1;
}
else
mat[i][j]=' ';
}
mat[i][m+1]=0;
}
for(i=0;i<=m+1;i++)
{
a[0][i]=-1;
b[0][i]=-1;
a[n+1][i]=-1;
b[n+1][i]=-1;
}
for(i=0;i<=n+1;i++)
{
a[i][0]=-1;
b[i][0]=-1;
a[i][m+1]=-1;
b[i][m+1]=-1;
}
coada.push(make_pair(i2[1],j2[1]));
a[i2[1]][j2[1]]=1;
lee(a);
coada.push(make_pair(i2[2],j2[2]));
b[i2[2]][j2[2]]=1;
lee(b);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cout<<setw(4)<<b[i][j];
}
cout<<"\n";
}
return 0;
}