Pagini recente » Cod sursa (job #1907781) | Cod sursa (job #531030) | Cod sursa (job #79768)
Cod sursa(job #79768)
#include <fstream>
#include <iomanip>
using namespace std;
long rj[101][101], r1[101][101],j1[101][101];
long i,j,n,m,cri,crj,cji,cjj;
char c;
fstream fin( "rj.in", ios::in ), fout( "rj.out", ios::out );
void drum_romeo(int l, int c, int k)
{
if( c>1 && r1[l][c-1] >= 0 )
if( r1[l][c-1] > k+1 )
{ r1[l][c-1] = k+1;
drum_romeo(l,c-1,k+1);
}
if( c<m && r1[l][c+1] >= 0 )
if( r1[l][c+1] > k+1 )
{ r1[l][c+1] = k+1;
drum_romeo(l,c+1,k+1);
}
if( l>1 && r1[l-1][c] >= 0 )
if( r1[l-1][c] > k+1 )
{ r1[l-1][c] = k+1;
drum_romeo(l-1,c,k+1);
}
if( l<n && r1[l+1][c] >= 0 )
if( r1[l+1][c] > k+1 )
{ r1[l+1][c] = k+1;
drum_romeo(l+1,c,k+1);
}
}
void drum_julieta(int l, int c, int k)
{
if( c>1 && j1[l][c-1] >= 0 )
if( j1[l][c-1] > k+1 )
{ j1[l][c-1] = k+1;
drum_julieta(l,c-1,k+1);
}
if( c<m && j1[l][c+1] >= 0 )
if( j1[l][c+1] > k+1 )
{ j1[l][c+1] = k+1;
drum_julieta(l,c+1,k+1);
}
if( l>1 && j1[l-1][c] >= 0 )
if( j1[l-1][c] > k+1 )
{ j1[l-1][c] = k+1;
drum_julieta(l-1,c,k+1);
}
if( l<n && j1[l+1][c] >= 0 )
if( j1[l+1][c] > k+1 )
{ j1[l+1][c] = k+1;
drum_julieta(l+1,c,k+1);
}
}
void search()
{
long min = 200000, l, c;
for( i=1; i<=n; i++ )
for( j=1; j<=m; j++ )
if( r1[i][j] == j1[i][j] && r1[i][j] > 0 && j1[i][j] > 0 )
if( min > r1[i][j] )
{
min = r1[i][j];
l = i, c = j;
}
fout << l << " " << c << " " << min << endl;
}
int main(void)
{
fin >> n >> m;
for( i=1; i<=n; i++ )
{ fin >> resetiosflags(ios::skipws) >> c;
for( j=1; j<=m; j++ )
{
fin >> resetiosflags(ios::skipws) >> c;
if( c == 'X' )
rj[i][j]= r1[i][j]= j1[i][j]= -1;
else if( c == 'R' )
{ rj[i][j] = -2; r1[i][j] = -2, j1[i][j] = -2; cri=i, crj=j; }
else if( c == 'J' )
{ rj[i][j] = -3; r1[i][j] = j1[i][j] = -3; cji=i, cjj=j; }
else
rj[i][j] = r1[i][j] = j1[i][j] = 100010;
}
}
drum_romeo(cri,crj,0);
drum_julieta(cji,cjj,0);
search();
return 0;
}