Pagini recente » Cod sursa (job #2801114) | Cod sursa (job #1122561) | Cod sursa (job #2203784) | Cod sursa (job #811047) | Cod sursa (job #2568232)
#include <fstream>
#include <iostream>
#include <cstdio>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, i, j, a[110][110], is1, js1, is2, js2, sol, isol, jsol;
int rom[110][110], juli[110][110], c[2][10010];
int p, u, ic, jc, iv, jv, d;
char ch[110];
int di[8]={1, 1, 1, 0, 0, -1, -1, -1};
int dj[8]={1, 0, -1, 1, -1, 1, 0, -1};
int main(){
fin>>n>>m;
sol=1000000000;
fin.get();
for(i=1; i<=n; i++){
fin.getline(ch, 105);
for(j=0; j<m; j++){
if(ch[j]=='X'){
a[i][j+1]=-1;
}
if(ch[j]=='R'){
is1=i;
js1=j+1;
}
if(ch[j]=='J'){
is2=i;
js2=j+1;
}
}
}
p=1;
u=1;
c[0][1]=is1;
c[1][1]=js1;
rom[is1][js1]=1;
while(p<=u){
ic=c[0][p];
jc=c[1][p];
for(d=0; d<8; d++){
iv=ic+di[d];
jv=jc+dj[d];
if(rom[iv][jv]==0 && a[iv][jv]!=-1 && iv>0 && iv<=n && jv>0 && jv<=m){
rom[iv][jv]=rom[ic][jc]+1;
u++;
c[0][u]=iv;
c[1][u]=jv;
}
}
p++;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cout<<rom[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
p=1;
u=1;
c[0][1]=is2;
c[1][1]=js2;
juli[is2][js2]=1;
while(p<=u){
ic=c[0][p];
jc=c[1][p];
for(d=0; d<8; d++){
iv=ic+di[d];
jv=jc+dj[d];
if(juli[iv][jv]==0 && a[iv][jv]!=-1 && iv>0 && iv<=n && jv>0 && jv<=m){
juli[iv][jv]=juli[ic][jc]+1;
u++;
c[0][u]=iv;
c[1][u]=jv;
}
}
p++;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cout<<juli[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
for(i=1; i<=n; i++){
for(j=1; j<=m; j++){
if(a[i][j]!=-1 && juli[i][j]>0 && rom[i][j]>0 && rom[i][j]==juli[i][j]){
if(rom[i][j]<sol || ((rom[i][j]==sol&&i<isol)||(rom[i][j]==sol && i==isol && j<jsol)) ){
sol=rom[i][j];
isol=i;
jsol=j;
}
}
}
}
fout<<sol<<" "<<isol<<" "<<jsol;
}