Cod sursa(job #2417807)
Utilizator | Data | 1 mai 2019 15:16:19 | |
---|---|---|---|
Problema | Rj | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.52 kb |
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,R[105][105],J[105][105],xr,yr,xj,yj,minim,p,q;
char s[105];
int dx[]={-1,1,0,0,-1,-1,1,1};
int dy[]={0,0,1,-1,-1,1,-1,1};
void bfs(int x,int y,int d[105][105])
{
int i;
queue < pair<int,int> > coada;
coada.push({x,y});
d[x][y]=1;
while(!coada.empty())
{
x=coada.front().first;
y=coada.front().second;
coada.pop();
for(i=0;i<8;i++)
{
if(d[x+dx[i]][y+dy[i]]>d[x][y]+1)
{
d[x+dx[i]][y+dy[i]]=d[x][y]+1;
coada.push({x+dx[i],y+dy[i]});
}
}
}
}
int main()
{
int i,j;
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
f.get(s+1,105);
for(j=1;j<=m;j++)
{
if(s[j]==' ')
{
R[i][j]=J[i][j]=n*m;
}
if(s[j]=='R')
{
xr=i;
yr=j;
R[i][j]=J[i][j]=n*m;
}
if(s[j]=='J')
{
xj=i;
yj=j;
R[i][j]=J[i][j]=n*m;
}
}
f.get();
}
bfs(xr,yr,R);
bfs(xj,yj,J);
minim=n*m;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(R[i][j]==J[i][j])
{
if(R[i][j]!=0)
{
if(R[i][j]<minim)
{
minim=R[i][j];
p=i;
q=j;
}
else
{
if(R[i][j]==minim)
{
if(i<p)
{
p=i;
q=j;
}
else
{
if(i==p)
{
if(j<q)
{
p=i;
q=j;
}
}
}
}
}
}
}
}
}
g<<minim<<" "<<p<<" "<<q;
return 0;
}