Pagini recente » Cod sursa (job #1666198) | Cod sursa (job #2846481) | Cod sursa (job #76079) | Cod sursa (job #1505026) | Cod sursa (job #197718)
Cod sursa(job #197718)
#include<fstream.h>
int main()
{
ifstream fin("gropi.in");
ofstream fout("gropi.out");
int a[3][5000000],nn,m,n=2,mm,c,i1,j1,i2,j2,i,j,k,ii[500000],jj[500000],s,f,icrt,jcrt,kk;
const int di[4]={-1,0,0,1},dj[4]={0,-1,1,0};
fin>>c>>nn;
memset(a,0,sizeof(a));
for(k=1;k<=nn;k++)
{
fin>>i>>j;
a[i][j]=-1;
}
fin>>mm;
for(k=1;k<=mm;k++)
{
m=c;
fin>>i1>>j1>>i2>>j2;
ii[s=f=1]=i1;
jj[s]=j1;
a[i1][j1]=1;
int nrmark,inou,jnou;
while(s<=f)
{
icrt=ii[s];jcrt=jj[s];s++;
nrmark=a[icrt][jcrt];
for(kk=0;kk<=3;kk++)
{
inou=icrt+di[kk];jnou=jcrt+dj[kk];
if(inou>=1&&inou<=n&&jnou>=1&&jnou<=m)
if(a[inou][jnou]==0)
{
a[inou][jnou]=nrmark+1;
ii[++f]=inou;
jj[f]=jnou;
if(inou==i2&&jnou==j2) {s=f+1;break;}
}
}
}
fout<<a[i2][j2]<<"\n";
for(i=1;i<=c;i++)
{
if(a[1][i]!=-1)
a[1][i]=0;
if(a[2][i]!=-1)
a[2][i]=0;
}
}
return 0;
}