Pagini recente » Cod sursa (job #1861100) | Cod sursa (job #570308) | Cod sursa (job #2516888) | Cod sursa (job #975763) | Cod sursa (job #400505)
Cod sursa(job #400505)
#include <fstream.h>
int n,m,j,ri,rj,ji,jj,nr;
int a[103][103],b[103][103];
char s[103];
using namespace std;
const int dx[8]={-1,-1,0,1,1,1,0,-1};
const int dy[8]={0,1,1,1,0,-1,-1,-1};
int cx[10000];
int cy[10000];
void citire(){
ifstream f("rj.in");
f>>n>>m;
f.getline(s,103);
for(int i=1;i<=n;i++)
{
f.getline(s,103);
for(int j=0;j<m;j++)
{
if(s[j]==' ')
{
a[i][j+1]=0;
b[i][j+1]=0;
}
if(s[j]=='X')
{
a[i][j+1]=-1;
b[i][j+1]=-1;
}
if(s[j]=='R')
{ ri=i; rj=j+1; }
if(s[j]=='J')
{ ji=i; jj=j+1; }
}
}
f.close();
}
void bordare (int a[103][103]){
for(int i=0;i<=m+1;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
}
for(int i=0;i<=n+1;i++)
{
a[i][0]=-1;
a[i][m+1]=-1;
}
}
void lee (int x,int y,int a[103][103]) {
cx[0]=x;
cy[0]=y;
nr=1;
a[x][y]=1;
int mac=0;
for(int i=0; i<nr && mac==0 ;i++)
for(int k=0;k<8;k++)
if(a[cx[i]+dx[k]][cy[i]+dy[k]]==0)
{
a[cx[i]+dx[k]][cy[i]+dy[k]]=a[cx[i]][cy[i]]+1;
cx[nr]=cx[i]+dx[k];
cy[nr]=cy[i]+dy[k];
nr++;
if(cx[i]+dx[k]==x && cy[i]+dy[k]==y)
mac=1;
}
}
int main(){
ofstream g("rj.out");
citire();
bordare (a); bordare (b);
lee(ri, rj, a); lee(ji,jj,b);
int minx=-1,miny=-1;
int min=1000;
for(int i=1;i<n;i++)
for(int j=1;j<m;j++)
if (a[i][j]==-1 || a[i][j]==0)
int s=0;
else
if (a[i][j]==b[i][j])
if(a[i][j]<min)
{
min=a[i][j];
minx=i;
miny=j;
}
g<<min<<" "<<minx<<" "<<miny<<endl;
g.close();
return 0;
}