Pagini recente » Cod sursa (job #2658971) | Cod sursa (job #2967843) | Cod sursa (job #2380092) | Cod sursa (job #2461843) | Cod sursa (job #700749)
Cod sursa(job #700749)
#include<fstream>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
struct comp
{
int lin,col;
};
int t,q,a,b,x,y,i,p,k,tmin=9000,poz[2],dl[]={-1,-1,0,1,1,1,0,-1},dc[]={0,1,1,1,0,-1,-1,-1},val,j,yi,xf,xi,yf,h[200][200],w[200][200],g[4],sw;
char m[200][200];
comp c[5000],c1[5000];
int main()
{
in>>t>>q;
in.get();
while(in.getline(m[i],101))
i++;
for(i=0;i<t;i++)
for(j=0;j<q;j++)
if(m[i][j]=='X')
h[i][j]=w[i][j]=-1;
else
if(m[i][j]=='R'||m[i][j]=='J')
{
h[i][j]=w[i][j]=0;
g[k]=i;
k++;
g[k]=j;
k++;
}
c[1].lin=xi=g[0];
c[1].col=yi=g[1];
x=1;y=1;
while(x<=y)
{ val=h[c[x].lin][c[x].col];
for(i=0;i<=7;i++)
{ a=c[x].lin+dl[i];
b=c[x].col+dc[i];
if(!((xi==a&&yi==b)||h[a][b]>0)&&(a>=0&&a<=t&&b>=0&&b<=q)&&h[a][b]<=val&&h[a][b]!=-1)
{ h[a][b]=val+1;
y++;
c[y].lin=a;
c[y].col=b;
}
}
x++;
}
c[1].lin=xi=g[2];
c[1].col=yi=g[3];
x=1;y=1;
while(x<=y)
{ val=w[c[x].lin][c[x].col];
for(i=0;i<=7;i++)
{ a=c[x].lin+dl[i];
b=c[x].col+dc[i];
if(!((xi==a&&yi==b)||w[a][b]>0)&&(a>=0&&a<=t&&b>=0&&b<=q)&&w[a][b]<=val&&w[a][b]!=-1)
{ w[a][b]=val+1;
y++;
c[y].lin=a;
c[y].col=b;
}
}
x++;
}
/*
for(i=0;i<t;i++)
{ for(j=0;j<q;j++)
out<<h[i][j]<<" ";
out<<'\n';
}
out<<'\n';
for(i=0;i<t;i++)
{ for(j=0;j<q;j++)
out<<w[i][j]<<" ";
out<<'\n';
}
out<<'\n';*/
for(i=0;i<t;i++)
for(j=0;j<q;j++)
if(h[i][j]==w[i][j]&&h[i][j]!=-1&&w[i][j]!=-1&&h[i][j]!=0)
if(h[i][j]<tmin)
{
tmin=h[i][j];
poz[0]=i;
poz[1]=j;
}
out<<tmin+1<<" "<<poz[0]+1<<" "<<poz[1]+1;
}