Cod sursa(job #432459)

Utilizator soare_cristian16Cristy93 soare_cristian16 Data 2 aprilie 2010 13:22:25
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
const int dab[4]={0,1,0,-1};
const int dor[4]={1,0,-1,0};
struct bfs
{
	int absc,ordon;
}t[10001],x,y;
char v[100][100];
int ro[100][100],ju[100][100],n,m,minim=10001,absc,ordon,a1,b1,a2,b2;
void lee(int absc, int ordon, int c[100][100])
{
	int a=1,b=1,i;
	t[1].absc=absc;
	t[1].ordon=ordon;
	while(a<=b)
	{
		x=t[a++];
		for(i=0;i<4;i++)
		{
			y.absc=x.absc+dab[i];
			y.ordon=x.ordon+dor[i];
			if(v[y.absc][y.ordon]==' '&&c[y.absc][y.ordon]==0&&y.absc>=0&&y.absc<n&&y.ordon>=0&&y.ordon<m)
			{
				t[++b]=y;
				c[y.absc][y.ordon]=c[x.absc][x.ordon]+1;
			}
		}
	}
}
int main()
{
	int i,j;
	f>>n>>m;
	f.getline(v[0],100);
	for(i=0;i<n;i++)
	{
		f.getline(v[i],100);
		for(j=0;j<m;j++)
		{
			if(v[i][j]=='R')
			{
				a1=i;
				b1=j;
			}
			else
			if(v[i][j]=='J')
			{
				a2=i;
				b2=j;
			}
		}
	}
	lee(a1,b1,ro);
	lee(a2,b2,ju);
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			if(v[i][j]==' '&&ro[i][j]==ju[i][j]&&ro[i][j]&&minim>ro[i][j])
			{
				minim=ro[i][j];
				absc=i;
				ordon=j;
			}
		}
	}
	g<<minim<<" "<<absc+1<<" "<<ordon+1;
	return 0;
}