Pagini recente » Cod sursa (job #1861132) | Cod sursa (job #1610157) | Cod sursa (job #2350609) | Cod sursa (job #2853032) | Cod sursa (job #1896124)
#include <iostream>
#include <fstream>
struct punct{int x;int y;};
using namespace std;
void lee(int i,int j,int b[105][105])
{ punct C[105];
int p,u,lin,col;
p=1;u=1;
C[p].x=i;
C[p].y=j;
b[i][j]=1;
///aplicam lee pentru toate directiile
while(p<=u){
//adaugam in coada vecinii lui
lin=C[p].x;
col=C[p].y;
if(b[lin-1][col]==0){
u++;
C[u].x=lin-1;
C[u].y=col;
b[lin-1][col]=b[lin][col]+1;
}
if(b[lin-1][col-1]==0){
u++;
C[u].x=lin-1;
C[u].y=col-1;
b[lin-1][col-1]=b[lin][col]+1;
}
if(b[lin][col+1]==0){
u++;
C[u].x=lin;
C[u].y=col+1;
b[lin][col+1]=b[lin][col]+1;
}
if(b[lin+1][col+1]==0){
u++;
C[u].x=lin+1;
C[u].y=col+1;
b[lin+1][col+1]=b[lin][col]+1;
}
if(b[lin+1][col]==0){
u++;
C[u].x=lin+1;
C[u].y=col;
b[lin+1][col]=b[lin][col]+1;
}
if(b[lin+1][col+1]==0){
u++;
C[u].x=lin+1;
C[u].y=col+1;
b[lin+1][col+1]=b[lin][col]+1;
}
if(b[lin][col-1]==0){
u++;
C[u].x=lin;
C[u].y=col-1;
b[lin][col-1]=b[lin][col]+1;
}
if(b[lin-1][col-1]==0){
u++;
C[u].x=lin-1;
C[u].y=col-1;
b[lin-1][col-1]=b[lin][col]+1;
}
p++;
}
}
int main()
{ char a[105][105];
int i,j,m,n,i2,j2,i3,j3,b[105][105]={-2},c[105][105]={-2};
ifstream f("rj.in");
ofstream g("rj.out");
f>>n>>m;
i=0;
j=0;
f.get();
for(i=1;i<=n+1;i++){ /// nu se initializa b,c cu -2 in declarare asa ca am pus -2 aici
for(j=1;j<=m+1;j++){
f.get(a[i][j]);
b[i][j]=-2;
c[i][j]=-2;
}}
/* for(i=1;i<n+1;i++){
for(j=1;j<=m+1;j++){
cout<<a[i][j];
}
}
*/
for(i=1;i<n+1;i++){
for(j=1;j<m+1;j++){
if(a[i][j]=='R'){ ///pun zero in locurile prin care se poate parcurge
i2=i;
j2=j;
b[i][j]=0;
c[i][j]=0;
}
if(a[i][j]=='J'){
i3=i;
j3=j;
b[i][j]=0;
c[i][j]=0;
}
if(a[i][j]==' '){
b[i][j]=0;
c[i][j]=0;
}
}
}
lee(i2,j2,b);
/*for(i=1;i<n+1;i++){
for(j=1;j<m+1;j++){
cout<<b[i][j]<<" ";
}cout<<endl;
}*/
lee(i3,j3,c);
/*cout<<endl;
for(i=1;i<n+1;i++){
for(j=1;j<m+1;j++){
cout<<c[i][j]<<" ";
}cout<<endl;
}
*/
int dism;
for(i=1;i<n+1;i++)
for(j=1;j<m+1;j++)
if(b[i][j]==c[i][j] && b[i][j]!=-2 && b[i][j]!=0){
dism=c[i][j];
i2=i;
j2=j;
}
g<<dism<<' '<<i2<<' '<<j2;
return 0;
}