Cod sursa(job #696164)

Utilizator valibadea9Sotan Mircea Sebastian valibadea9 Data 28 februarie 2012 17:20:15
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
//Harta unui oras este codificata intr-o matrice n*m cu valori de 0 si 1
//0 reprezentand strazile poziti accesibile iar 1 repre. cladirile zone inacesibile
//In pozitia ir jr(libera) se gaseste romeo
//iar in pozitia ij jj(libera) se gaseste julieta
//Sa se determine nr min de pasi(de pozitii) pe care trebuie sa-i faca romeo ca 
//sa ajunga la julieta mergand doar pe poziii 0(libere)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin ( "rj.in" );
ofstream fout ( "rjout" );
int main ()
{
	int n, m, i, j, a[100][100], pas, ir, jr, ij, jj;
	fin >> n >> m >> ir >> jr >> ij >> jj;
	for ( i = 1; i <= n; i++ )
		for ( j = 1; j <= m; j++ )
			fin >> a[i][j];
		a[ir][jr] = 1;
		pas = 1;
		while ( a[ij][jj] == 0 )
		{
			for ( i = 1; i <= n; i++ )
				for( j = 1; j <= m; j++ )
					if ( a[i][j] == pas )
					{
						if ( a[i][j-1] == 0 )
							a[i][j-1] = pas + 1;
						if ( a[i][j+1] == 0 )
							a[i][j+1] = pas + 1;
						if ( a[i-1][j] == 0 )
							a[i-1][j] = pas + 1;
						if ( a[i+1][j] == 0 )
							a[i+1][j] = pas + 1;
					}
					pas++;
		}fout << pas-1 << " " << endl;
		for ( i = 1; i <= n; i++ )
			{
				for ( j = 1; j <= m; j++ )
					fout << a[i][j] << " ";
					
				fout << endl;
		}
		fin.close();
		fout.close();
		return 0;
}