Pagini recente » Cod sursa (job #1279414) | Cod sursa (job #1436814) | Cod sursa (job #2354095) | Cod sursa (job #2807064) | Cod sursa (job #1520721)
#include <fstream>
#include <queue>
#include <string.h>
#include <iostream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int a[105][105],n,m;
int J[105][105],R[105][105],rx,ry,jx,jy;
char l;
queue <int> Qx, Qy;
const int dx[]={1,1,1,0,-1,-1,-1,0},dy[]={1,0,-1,-1,-1,0,1,1};
void Lee(int d[][105], int sx, int sy)
{
d[sx][sy]=1;
Qx.push(sx);
Qy.push(sy);
while (Qx.size())
{
int x=Qx.front();
int y=Qy.front();
Qx.pop();
Qy.pop();
for (int k=0;k<8;k++)
{
int xx=x+dx[k];
int yy=y+dy[k];
if (xx && yy && xx<=n && yy<=n && d[xx][yy]==0)
{
d[xx][yy]=d[x][y]+1;
Qx.push(xx);
Qy.push(yy);
}
}
}
}
int main()
{
f>>n>>m;
f.get();
for (int i=1;i<=n;i++)
{
char v[105];
f.getline (v,105);
for (int j=0;j< strlen(v);j++)
{
if (v[j]=='R')
{
rx=i;
ry=j+1;
}
else
if (v[j]=='J')
{
jx=i;
jy=j+1;
}
else
if (v[j]=='X')
{
a[i][j+1]=-1;
R[i][j+1]=-1;
J[i][j+1]=-1;
}
}
}
Lee(R,rx,ry);
Lee(J,jx,jy);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
cout<<R[i][j]<<" ";
cout<<"\n";
}
cout<<"\n";
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
cout<<J[i][j]<<" ";
cout<<"\n";
}
cout<<"\n";
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<"\n";
}
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
if (R[i][j]>0 && R[i][j] == J[i][j])
{
g<<R[i][j]<<" "<<i<<" "<<j;
return 0;
}
return 0;
}