Pagini recente » Cod sursa (job #1504428) | simulare_oji_2023_clasa_9_16_martie | Cod sursa (job #1828400) | Cod sursa (job #1242455) | Cod sursa (job #1655668)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define N 101
using namespace std;
struct poz{
int l,c;
};
struct poz que[N*N],rom,jul;
int lin,col,head,tail,r[N][N],mj[N][N];
void enq(struct poz t){
que[head++]=t;
}
struct poz deq(){
return que[tail++];
};
void printmatr(){
int i,j;
for(i=0;i<lin;i++){
for(j=0;j<col;j++){
printf("%5d ",r[i][j]);
}
printf("\n");
}
printf("\n");
}
void printmatj(){
int i,j;
for(i=0;i<lin;i++){
for(j=0;j<col;j++){
printf("%5d ",mj[i][j]);
}
printf("\n");
}
printf("\n");
}
void lee(struct poz t,int m[N][N]){
int i,j,l,c;
head=tail=0;
enq(t);
while(head>tail){
t=deq();
l=t.l;
c=t.c;
for(i=-1;i<=1;i++){
for(j=-1;j<=1;j++){
if(i==0 && j==0){
continue;
}
if(l+i<lin && l+i>=0 && c+j<col && c+j>=0 && m[l][c]+1<m[l+i][c+j] ){
m[l+i][c+j]=m[l][c]+1;
t.l=i+l;
t.c=j+c;
enq(t);
}
}
}
}
}
int main(){
int i,j,imin,jmin,tmin;
char ch;
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d %d",&lin,&col);
scanf("%c",&ch);
for(i=0;i<lin;i++){
for(j=0;j<col;j++){
scanf("%c",&ch);
if(ch==' ' || ch=='0'){
r[i][j]=N*N;
mj[i][j]=N*N;
}else if(ch=='R'){
r[i][j]=0;
mj[i][j]=N*N;
rom.l=i;
rom.c=j;
}else if(ch=='J'){
mj[i][j]=0;
r[i][j]=N*N;
jul.l=i;
jul.c=j;
}else if(ch=='X'){
r[i][j]=mj[i][j]=-1;
}
}
scanf("%c",&ch);
}
lee(rom,r);
lee(jul,mj);
tmin=N*N;
for(i=0;i<lin;i++){
for(j=0;j<col;j++){
if(r[i][j]==-1 || mj[i][j]==-1){
continue;
}
if(r[i][j]==mj[i][j] && tmin>r[i][j]){
tmin=r[i][j];
imin=i;
jmin=j;
}
}
}
printf("%d %d %d",imin+1,jmin+1,tmin+1);
// printmatr();
// printmatj();
return 0;
}