Pagini recente » Cod sursa (job #274322) | Cod sursa (job #2026874) | Cod sursa (job #2634121) | Cod sursa (job #1140737) | Cod sursa (job #1020899)
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
#include <queue>
#include <deque>
#include <iomanip>
#include <stack>
#include <cstdio>
using namespace std;
ifstream fin("rj.in");
FILE *fout=fopen("rj.out", "w");
#define baza 10
#define MAX 102
#define MOD 104659
typedef long long int lli;
queue <pair <int, int> > coada;
int a[MAX][MAX], n, i, b[MAX][MAX], m, j, i2[3], j2[3], min1 , x, y, d;
char c[MAX][MAX];
int poz[8][2]={ {-1,-1}, {-1,0}, {-1,1}, {0,-1}, {0,1}, {1,-1}, {1,0}, {1,1} };
void lee()
{
for(i=1;i<=2;i++)
{
coada.push(make_pair(i2[i], j2[i]));
a[i2[i]][j2[i]]=1;
while(!coada.empty())
{
x=coada.front().first;
y=coada.front().second;
coada.pop();
for(j=0;j<8;j++)
{
if(!a[x+poz[j][0]][y+poz[j][1]])
{
a[x+poz[j][0]][y+poz[j][1]]=a[x][y]+1;
coada.push(make_pair(x+poz[j][0], y+poz[j][1]));
}
}
}
if(i==1)
{
for(d=1;d<=n;d++)
{
for(j=1;j<=m;j++)
{
b[d][j]=a[d][j];
a[d][j]=min(a[d][j],0);
}
}
}
}
}
int main()
{
fin>>n>>m;
fin.get(c[0][0]);
for(i=1;i<=n;i++)
{
fin.getline(c[i]+1,m+1);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(c[i][j]=='R')
{
i2[1]=i;
j2[1]=j;
}
else if(c[i][j]=='J')
{
i2[2]=i;
j2[2]=j;
}
else if(c[i][j]=='X')
{
a[i][j]=b[i][j]=-1;
}
else
c[i][j]=' ';
}
c[i][m+1]=0;
}
for(i=0;i<=n+1;i++)
{
a[i][m+1]=a[i][0]=b[i][m+1]=b[i][0]=-1;
}
for(i=0;i<=m+1;i++)
{
a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
}
lee();
min1=n*m;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]==b[i][j] && a[i][j]>0)
{
if(a[i][j]<min1)
min1=a[i][j];
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]==b[i][j])
{
if(a[i][j]==min1)
{
fprintf(fout, "%d %d %d\n", a[i][j], i, j);
}
}
}
}
return 0;
}