Pagini recente » Cod sursa (job #226786) | Cod sursa (job #2365585) | Cod sursa (job #2473307) | Cod sursa (job #788498) | Cod sursa (job #766616)
Cod sursa(job #766616)
#include <cstdio>
using namespace std;
int n,m;
int matricer[105][105],matricej[105][105];
int di[8]={-1,-1,-1,0,+1,+1,+1,0};
int dj[8]={-1,0,+1,+1,+1,0,-1,-1};
int ri,rj,ji,jj;
struct coada{
int i,j;
}c[100*100+20];
void citire(){
char x;
scanf("%d %d",&n,&m);
scanf("\n");
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%c",&x);
if(x=='X'){
matricer[i][j]=-1;
matricej[i][j]=-1;
}
else if(x=='R'){
ri=i;
rj=j;
}
else if(x=='J'){
ji=i;
jj=j;
}
}
scanf("\n");
}
}
void bordare(){
int i,j;
for(j=0;j<m+1;j++){
matricer[0][j]=-1;
matricer[n+1][j]=-1;
matricej[0][j]=-1;
matricej[n+1][j]=-1;
}
for(i=0;i<n+1;i++){
matricer[i][0]=-1;
matricer[i][m+1]=-1;
matricej[i][0]=-1;
matricej[i][m+1]=-1;
}
}
void algoritm(int x[][105],int z,int t){
int u=1;
c[0].i=z;
c[0].j=t;
x[z][t]=1;
for(int p=0;p<u;p++){
int ic=c[p].i;
int jc=c[p].j;
for(int v=0;v<8;v++){
int i2=ic+di[v];
int j2=jc+dj[v];
if(x[i2][j2]==0){
x[i2][j2]=x[ic][jc]+1;
c[u].i=i2;
c[u].j=j2;
u++;
}
}
}
}
void drum(){
int minim=100000000;
int coloana=100000000;
int linie=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(matricer[i][j]==matricej[i][j] && matricer[i][j]!=-1 && matricer[i][j]!=0)
if(matricer[i][j]<minim){
minim=matricer[i][j];
coloana=j;
linie=i;
}
else if(matricer[i][j]==minim)
if(i<coloana){
minim=matricer[i][j];
coloana=j;
linie=i;
}
printf("%d %d %d",minim,linie,coloana);
}
void afisare(int x[][105]){
for(int i=0;i<=n+1;i++){
for(int j=0;j<=m+1;j++)
printf("%d ",x[i][j]);
printf("\n");
}
printf("\n");
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
citire();
bordare();
algoritm(matricer,ri,rj);
algoritm(matricej,ji,jj);
drum();
return 0;
}