Pagini recente » Cod sursa (job #1434061) | Cod sursa (job #469049) | Cod sursa (job #2829393) | Cod sursa (job #1610115) | Cod sursa (job #1125676)
#include <iostream>
#include <queue>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int d[105][105] ;
const int dlin[] = {-1, 0, 1, 0 , 1 , -1 , 1 , -1};
const int dcol[] = {0, -1, 0, 1 , 1 , -1 , -1 , 1};
struct pozitie{
int lin , col;
};
queue<pozitie>q;
void lee(pozitie x0)
{
pozitie x,y;
d[x0.lin][x0.col]=1;
q.push(x0);
while(!q.empty())
{
x=q.front();
q.pop();
for(int i=0;i<8;i++)
{
y.lin=x.lin+dlin[i];
y.col=x.col+dcol[i];
if((d[y.lin][y.col]==0)||(d[y.lin][y.col]>d[x.lin][x.col]))
{
d[y.lin][y.col]=1+d[x.lin][x.col];
q.push(y);
}
}
}
}
int main()
{
int i ,j, n,m ;
in>>n;
in>>m;
for(i=0;i<=m+1;i++)
{
d[0][i]=-1;
d[n+1][i]=-1;
}
for(i=0;i<=n+1;i++)
{
d[i][0]=-1;
d[i][m+1]=-1;
}
char c[105] , ca;
for(i=0;i<=n;i++)
{
in.getline(c,105);
for(j=1;j<m+1;j++)
{
ca=c[j-1];
if(ca==' ')
d[i][j]=0;
if((ca=='R')||(ca=='J'))
d[i][j]=-2;
if(ca=='X')
d[i][j]=-1;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<m+1;j++)
{
if(d[i][j]==-2)
lee((pozitie){i,j});
}
}
int max=0,poz1,poz2;
for(i=0;i<=n+1;i++)
{
for(j=0;j<=m+1;j++)
{
if(d[i][j]>max)
{
max=d[i][j];
poz1=i;
poz2=j;
}
}
}
out<<max<<" "<<poz1<<" "<<poz2;
in.close();
out.close();
return 0;
}