Pagini recente » Cod sursa (job #1762897) | Cod sursa (job #319022) | Cod sursa (job #824042) | Cod sursa (job #1942907) | Cod sursa (job #2313992)
#include <fstream>
#include <cstring>
#define MAX 100
using namespace std;
struct pairs {
int lin;
int col;
};
pairs queue[MAX*MAX+1],sol;
int R[MAX+2][MAX+2];
int J[MAX+2][MAX+2];
char c[MAX+1];
int dl[8]={-1,-1, 0, 1, 1, 1, 0,-1};
int dc[8]={ 0, 1, 1, 1, 0,-1,-1,-1};
int n,m;
void lee(int a[][MAX+2],int x,int y) {
int first,last,l,c;
first=last=1;
queue[first].lin=x;
queue[first].col=y;
while(first<=last) {
l=queue[first].lin; c=queue[first].col;
for(int k=0;k<8;k++) {
if(a[l+dl[k]][c+dc[k]]==0){
last++;
queue[last].lin=l+dl[k];
queue[last].col=c+dc[k];
a[l+dl[k]][c+dc[k]]=a[l][c]+1;
}
}
first++; ///stergem din coada primul element
}
}
ifstream fin("rj.in");
ofstream fout("rj.out");
int main()
{
int n,m,i,j,ri,rj,ji,jj,min;
fin>>n>>m;
fin.getline(c,1);
for(i=1;i<=n;i++) {
fin.getline(c+1,MAX+1);
for(j=1;j<=m;j++) {
if(c[j]==' ')
R[i][j]=J[i][j]=0;
else if(c[j]=='X')
R[i][j]=J[i][j]=-1;
else {
if(c[j]=='R') {
ri=i;
rj=j;
R[i][j]=1;
J[i][j]=0;
}
else {
ji=i;
jj=j;
J[i][j]=1;
R[i][j]=0;
}
}
}
}
for(i=0;i<=n+1;i++)
R[i][0]=R[i][m+1]=J[i][0]=J[i][m+1]=-1;
for(j=0;j<=m+1;j++)
R[0][j]=R[n+1][j]=J[0][j]=J[n+1][j]=-1;
lee(R,ri,rj);
lee(J,ji,jj);
min=MAX*MAX+1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(R[i][j]==J[i][j] && R[i][j]>0)
if(R[i][j]<min) {
min=R[i][j];
sol.lin=i;
sol.col=j;
}
/* for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) {
if(R[i][j]>=0)
cout<<" ";
cout<<(int)R[i][j]<<" ";
}
cout<<" ";
for(j=1;j<=m;j++) {
if(J[i][j]>=0)
cout<<" ";
cout<<(int)J[i][j]<<" ";
}
cout<<'\n';
}*/
fout<<min<<" "<<sol.lin<<" "<<sol.col;
return 0;
}