Pagini recente » Cod sursa (job #538982) | Cod sursa (job #1809346) | Cod sursa (job #1822812) | Cod sursa (job #2535700) | Cod sursa (job #1691983)
#include <iostream>
#include <cstdio>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int j,M[200][200],x,y;
char linie[200];
bool Vizitat[200],B[200][200];
vector < pair <int, int> > coada;
int main()
{
int n,m,i;
f>>n>>m;
f.getline(linie,n+1);
for (i=1;i<=n;i++)
{
f.getline(linie,n+1);
for (j=0;j<m;j++)
{
if (linie[j]=='R') {M[i][j+1]=1; coada.push_back(make_pair(i,j+1));}
else if (linie[j]=='J') {M[i][j+1]=1; coada.push_back(make_pair(i,j+1));B[i][j+1]=true;}
else if (linie[j]=='X') M[i][j+1]=-1;
}
}
for (i=0;i<=m;i++) M[0][i]=M[n+1][i]=-1;
for (i=0;i<=n;i++) M[i][0]=M[i][m+1]=-1;
int k=0;
int auxx[]={-1,0,+1,0,+1,+1,-1,-1};
int auxy[]={0,-1,0,+1,+1,-1,+1,-1};
while (k<coada.size())
{
x=coada[k].first;
y=coada[k].second;
for (i=0;i<8;i++)
{
if (M[x+auxx[i]][y+auxy[i]]==0)
{
coada.push_back(make_pair(x+auxx[i],y+auxy[i]));
B[x+auxx[i]][y+auxy[i]]=B[x][y];
M[x+auxx[i]][y+auxy[i]]=M[x][y]+1;
}
else if (M[x+auxx[i]][y+auxy[i]]!=-1&&B[x][y]!=B[x+auxx[i]][y+auxy[i]])
{
g<<M[x+auxx[i]][y+auxy[i]]<<" "<<x+auxx[i]<<" "<<y+auxy[i];
k=coada.size()+5;
break;
}
}
k++;
}
}