Pagini recente » Cod sursa (job #2280216) | Cod sursa (job #1058449) | Cod sursa (job #1567568) | Cod sursa (job #1475484) | Cod sursa (job #2265030)
#include <iostream>
#include <fstream>
#include <queue>
#include <string.h>
using namespace std;
int a[100][100],b[100][100];
queue <pair <int,int> > Q;
void bordare(int n, int m, int a[100][100])
{
for(int i=0; i<=n+1; i++)
{
a[i][0]=-1;
a[i][m+1]=-1;
}
for(int j=0; j<=m+1; j++)
{
a[0][j]=-1;
a[n+1][j]=-1;
}
}
const int di[]= {-1,0,1, 0};
const int dj[]= {0,-1,0, 1};
void lee(int x,int y,int a[100][100])
{
a[x][y]=1;
Q.push(make_pair(x,y));
while(!Q.empty())
{
pair<int,int> p=Q.front();
Q.pop();
for(int k=0; k<4; k++)
{
if(a[p.first+di[k]][p.second+dj[k]]==0)
{
a[p.first+di[k]][p.second+dj[k]] = 1 + a[p.first][p.second];
Q.push(make_pair(p.first+di[k] , p.second+dj[k]));
}
}
}
}
int main()
{
ifstream f("rj.in");
ofstream g("rj.out");
int N,M,ir,jr,ij,jj,mini=9999;
char v;
f>>N>>M;
bordare(N,M,a);
bordare(N,M,b);
f.get();
for(int i=1; i<=N; i++)
{
for(int j=1; j<=M; j++)
{
f.get(v);
if(v=='X') {a[i][j]=-1;b[i][j]=a[i][j];}
else if(v==' ') {a[i][j]=0;b[i][j]=a[i][j];}
else if(v=='R')
{
ir=i;
jr=j;
a[i][j]=0;
b[i][j]=a[i][j];
}
else
{
ij=i;
jj=j;
a[i][j]=0;
b[i][j]=a[i][j];
}
}
f.get();
}
lee(ir,jr,a);
lee(ij,jj,b);
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
if(a[i][j]!=-1&&a[i][j]!=0)
if(a[i][j]==b[i][j]&&a[i][j]<mini)
{mini=a[i][j]; ir=i;
jr=j;}
cout<<mini-1<<" "<<ir<<" "<<jr;
return 0;
}