Pagini recente » Cod sursa (job #2259715) | Cod sursa (job #2703497) | Cod sursa (job #1572771) | Cod sursa (job #52001) | Cod sursa (job #2853321)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct coord
{
int x,y;
};
int n, m, rom[105][105], jul[105][105], tmin=-5;
coord rs, js, dir[8], meet;
void citire()
{
fin >> n >> m;
fin.get();
for (int i = 1; i <= n; i++)
{
char ch[101];
fin.getline(ch, m + 1);
for (int j = 0; j < m; j++)
{
if (ch[j] == 'X')
{
rom[i][j+1]=-1;
jul[i][j+1]=-1;
}
if (ch[j] == 'R')
{
rs.x=i;
rs.y=j+1;
}
if (ch[j] == 'J')
{
js.x=i;
js.y=j+1;
}
}
}
for(int j=0;j<=n;j++)
{
rom[0][j]=-1;
rom[n+1][j]=-1;
rom[j][0]=-1;
rom[j][n+1]=-1;
jul[0][j]=-1;
jul[n+1][j]=-1;
jul[j][0]=-1;
jul[j][n+1]=-1;
}
}
void dirset()
{
dir[0].x=0;dir[0].y=-1;
dir[1].x=-1;dir[1].y=0;
dir[2].x=0;dir[2].y=1;
dir[3].x=1;dir[3].y=0;
dir[4].x=1;dir[4].y=1;
dir[5].x=-1;dir[5].y=-1;
dir[6].x=-1;dir[6].y=1;
dir[7].x=1;dir[7].y=-1;
}
void leeRomeo()
{
queue<coord> q;
coord el, next;
q.push(rs);
rom[rs.x][rs.y]=1;
while(!q.empty())
{
el=q.front();
q.pop();
for(int i=0;i<8;i++)
{
next.x=el.x+dir[i].x;
next.y=el.y+dir[i].y;
if(rom[next.x][next.y]==0)
{
q.push(next);
rom[next.x][next.y]=rom[el.x][el.y]+1;
}
}
}
}
void leeJulieta()
{
queue<coord> q;
coord el, next;
q.push(js);
jul[js.x][js.y]=1;
while(!q.empty())
{
el=q.front();
q.pop();
for(int i=0;i<8;i++)
{
next.x=el.x+dir[i].x;
next.y=el.y+dir[i].y;
if(jul[next.x][next.y]==0)
{
q.push(next);
jul[next.x][next.y]=jul[el.x][el.y]+1;
}
}
}
}
int main()
{
citire();
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cout<<jul[i][j]<<' ';
}
cout<<'\n';
}cout<<'\n';
dirset();
leeRomeo();
leeJulieta();
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cout<<rom[i][j]<<' ';
}
cout<<'\n';
}cout<<'\n';
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cout<<jul[i][j]<<' ';
}
cout<<'\n';
}cout<<'\n';
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(rom[i][j]!=-1&&rom[i][j]==jul[i][j])
{
if(rom[i][j]>tmin)
{
tmin=rom[i][j];
meet.x=i;
meet.y=j;
}
}
}
}
fout<<tmin<<' '<<meet.x<<' '<<meet.y;
return 0;
}