Pagini recente » Cod sursa (job #1016328) | Cod sursa (job #2300265) | Cod sursa (job #1859783) | Cod sursa (job #424167) | Cod sursa (job #45960)
Cod sursa(job #45960)
#include <fstream>
#include <iostream>
using namespace std;
const int MAX = 1001;
const int INTMAX = 127;
ifstream in("padure.in");
ofstream out("padure.out");
short a[MAX][MAX];
char b[MAX][MAX];
int n, m, pl, pc, cl, cc;
void read()
{
in >> n >> m >> pl >> pc >> cl >> cc;
for ( int i = 0; i < n; ++i )
for ( int j = 0; j < m; ++j )
in >> a[i][j];
for ( int i = 0; i < n; ++i )
for ( int j = 0; j < m; ++j )
b[i][j] = INTMAX;
}
struct coada
{
short x, y;
};
coada lee[1001*1001];
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
void print()
{
cout << n << " " << m << " " << pl << " " << pc << " " << cl << " " << cc << endl;
for ( int i = 0; i < n; ++i )
{
for ( int j = 0; j < m; ++j )
cout << (int)b[i][j] << " ";
cout << endl;
}
cout << endl;
}
void sol()
{
int p = 0, u =0;
lee[p].x = pl-1;
lee[p].y = pc-1;
b[lee[p].x][lee[p].y] = 0;
while ( p <= u )
{
for ( int i = 0; i < 4; ++i )
{
int X = lee[p].x + dx[i];
int Y = lee[p].y + dy[i];
int D = b[lee[p].x][lee[p].y];
if ( X < n && Y < m && X >= 0 && Y >= 0
&& b[X][Y] > D )
{
++u;
lee[u].x = X;
lee[u].y = Y;
//vis[X][Y] = 1;
b[X][Y] = D;
cout << lee[u-1].x << " " << lee[u-1].y << endl;
//cout << p << " " << u << endl << endl;
if ( a[X][Y] != a[lee[p].x][lee[p].y] )
{
b[X][Y] = D+1;
//++u;
//lee[u].x = X;
//lee[u].y = Y;
}
}
}
++p;
}
}
int main()
{
read();
sol();
//print();
cout << (int)b[cl-1][cc-1] << endl;
out << (int)b[cl-1][cc-1] << endl;
return 0;
}