Pagini recente » Istoria paginii utilizator/souleater | Istoria paginii utilizator/ralucaandreea04 | Istoria paginii utilizator/marians98 | Istoria paginii utilizator/mosila.luciana | Cod sursa (job #778085)
Cod sursa(job #778085)
#include<fstream>
#include<utility>
#include<queue>
#define mp make_pair
#define f first
#define s second
#define NN 51
using namespace std;
ofstream out("kdrum.out");
const int di[]={0,0,1,-1};
const int dj[]={1,-1,0,0};
int a[NN][NN],d[NN][NN],n,m,K;
queue<pair<int , int > > Q;
pair<int,int >start,finish;
bool inside( int i ,int j)
{
if ( i>=1 && i<=n && j>=1 && j<=m )
return true;
return false;
}
void read();
void LEE();
void write(int a[NN][NN],int ,int );
int main()
{
read();
LEE();
out<<d[finish.f][finish.s];
//write(d,n,m);
return 0;
}
void read()
{
ifstream in("kdrum.in");
in>>n>>m>>K;
in>>start.f>>start.s>>finish.f>>finish.s;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
in>>a[i][j];
for(int i=1;i<=n;++i)
for(int j=1;j<=m;j++)
{
if(a[i][j] > 0)
d[i][j]=0;
else
d[i][j]=-1;
}
Q.push(mp(start.f,start.s));
d[start.f][start.s]=1;
}
void LEE()
{
int i,j,ii,jj,k;
while(!Q.empty())
{
i=Q.front().f;
j=Q.front().s;
for( k=0 ; k < 4; k++)
{
ii=i+di[k];
jj=j+dj[k];
if (ii>=1 && ii<=n && jj>=1 && jj<=m && (d[ii][jj] ==0 ) )
{
d[ii][jj] =d[i][j] + 1;
Q.push(mp(ii,jj));
}
}
Q.pop();
}
}
void write(int a[NN][NN],int n,int m)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
out<<a[i][j]<<" ";
out<<'\n';
}
}