Pagini recente » Cod sursa (job #1122203) | Cod sursa (job #2906042) | Cod sursa (job #1070254) | Cod sursa (job #2385745) | Cod sursa (job #1707235)
#include <fstream>
#include <cstring>
using namespace std;
ifstream y("rj.in");
ofstream w("rj.out");
int main()
{
int m,n,x1,y1,x2,y2,X,Y,P,l,cc,b[101][101],xf,yf,mini=999,d[101][101],s,f;
char a[100][100];
y>>n>>m;
struct
{
int x,y,p,t;
} Q[1001];
char str[101];
y.getline(str,100);
for (int i = 1; i <= n; i++)
{
y.getline(str,100);
for (int j = 0; j < strlen(str); j++)
{
if (str[j] == ' ')
b[i][j+1] = 999;
else if (str[j] == 'X')
b[i][j+1] = -1;
else
if (str[j]=='R')
x1=i,y1=j+1;
else if(str[j]=='J')
x2=i,y2=j+1,b[i][j+1]=999;
}
if (strlen(str) < m)
for (int j = strlen(str)+1; j <=m; j++)
b[i][j] = 999;
}
Q[1].x=x1;
Q[1].y=y1;
Q[1].p=0;
s=1;
f=2;
for(int p=1; p<=n; p++)
for(int r=1; r<=m; r++)
d[p][r]=0;
while(s<=f)
{
X=Q[s].x;
Y=Q[s].y;
P=Q[s].p;
if(b[X-1][Y]==999)
{
Q[f].x=X-1;
Q[f].y=Y;
Q[f].p=P+1;
Q[f].t=s;
if(X!=x2&&Y!=y2)
d[X-1][Y]=1;
f++;
}
if(b[X+1][Y]==999)
{
Q[f].x=X+1;
Q[f].y=Y;
Q[f].t=s;
Q[f].p=P+1;
if(X!=x2&&Y!=y2)
d[X+1][Y]=1;;
f++;
}
if(b[X][Y-1]==999)
{
Q[f].x=X;
Q[f].y=Y-1;
Q[f].t=s;
Q[f].p=P+1;
if(X!=x2&&Y!=y2)
d[X][Y-1]=1;
f++;
}
if(b[X][Y+1]==999)
{
Q[f].x=X;
Q[f].y=Y+1;
Q[f].t=s;
Q[f].p=P+1;
if(X!=x2&&Y!=y2)
d[X][Y+1]=1;
f++;
}
if(b[X+1][Y+1]==999)
{
Q[f].x=X+1;
Q[f].y=Y+1;
Q[f].t=s;
Q[f].p=P+1;
if(X!=x2&&Y!=y2)
d[X+1][Y+1]=1;
f++;
}
if(b[X-1][Y-1]==999)
{
Q[f].x=X-1;
Q[f].y=Y-1;
Q[f].t=s;
Q[f].p=P+1;
if(X!=x2&&Y!=y2)
d[X-1][Y-1]=1;
f++;
}
if(b[X+1][Y-1]==999)
{
Q[f].x=X+1;
Q[f].y=Y-1;
Q[f].t=s;
Q[f].p=P+1;
if(X!=x2&&Y!=y2)
d[X+1][Y-1]=1;
f++;
}
if(b[X-1][Y+1]==999 )
{
Q[f].x=X-1;
Q[f].y=Y+1;
Q[f].t=s;
Q[f].p=P+1;
if(X!=x2&&Y!=y2)
d[X-1][Y+1]=1;
f++;
}
s++;
}
int poz;
for(int i=2; i<f; i++)
if(Q[i].x==x2&&Q[i].y==y2)
if(Q[i].p<mini)
if(Q[i].p%2==0)
{
poz=i;
mini=Q[i].p;
}
int nr;
nr=Q[poz].p/2;
for(int i=1;i<=nr;i++)
poz=Q[poz].t;
w<<nr+1<<" "<< Q[poz].x<<" "<<Q[poz].y;
return 0;
}