Pagini recente » Istoria paginii runda/test123123/clasament | Cod sursa (job #2042785) | Cod sursa (job #112027) | Cod sursa (job #141738) | Cod sursa (job #1128466)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream in ("rj.in");
ofstream out ("rj.out");
int n,m,rom[101][101],jul[101][101];
char a[101][101];
const int N=1001;
const int dlin[] = {-1, -1, -1, 0, 0, 1, 1, 1};
const int dcol[] = {-1, 0, 1, -1, 1, -1, 0, 1};
struct pozitie {
int lin,col;
};
queue <pozitie> q;
pozitie x;
void lee (int d[101][101],pozitie x0)
{
pozitie x,y;
q.push (x0);
while (!q.empty())
{
x=q.front();
q.pop();
for (int i=0;i<8;i++)
{
y.lin=x.lin+dlin[i];
y.col=x.col+dcol[i];
if (d[y.lin][y.col]==0 && a[y.lin][y.col]==' ')
{
q.push(y);
d[y.lin][y.col]=d[x.lin][x.col]+1;
}
}
}
}
void f ()
{
int linia=0,coloana=0;
rom[0][0]=30000;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
if (rom[i][j]==jul[i][j] && rom[i][j]!=0)
{
if (rom[i][j]<rom[linia][coloana])
{
linia=i;
coloana=j;
}
}
}
}
out<<rom[linia][coloana]+1<<" ";
out<<linia<<" "<<coloana<<" ";
}
void scrie(int d[101][101])
{
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
cout<<d[i][j]<<" ";
}
cout<<'\n';
}
cout<<'\n'<<"*********"<<'\n';
}
int main()
{
in>>n>>m>>ws;
for (int i=1;i<=n;i++)
{
in.getline(1+a[i], N);
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
if (a[i][j]=='R')
{
x.lin=i;
x.col=j;
lee(rom,x);
}
else
if (a[i][j]=='J')
{
x.lin=i;
x.col=j;
lee (jul,x);
}
}
}
//scrie(rom);
//scrie(jul);
f();
return 0;
}