Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<fstream>
- using namespace std;
- short n,m,xi,yi,xf,yf,b[177][177];
- short dx[]={-1,0,1,0};
- short dy[]={0,1,0,-1};
- short q[30625][2];
- struct alee{
- short x,y;
- };
- alee a[15000];
- void citire()
- {
- ifstream fin("alee.in");
- short i,j,k;
- fin>>n>>m;
- for(k=1;k<=m;k++){
- fin>>a[k].x>>a[k].y;
- b[a[k].x][a[k].y]=-1;
- }
- fin>>xi>>yi>>xf>>yf;
- for(i=1;i<=n;i++)
- {
- for(j=1;j<=n;j++)
- if(b[i][j]!=-1)
- b[i][j]=31000;
- }
- b[xi][yi]=0;
- }
- void afisare()
- {
- ofstream fout("alee.out");
- fout<<b[xf][yf]+1;
- }
- void lee(short c[177][177])
- {
- int i,x,y,xx,yy,st=0,dr=0,ok=0;
- q[0][0]=xi;
- q[0][1]=yi;
- while(st<=dr&&ok==0)
- {
- x=q[st][0];
- y=q[st][1];
- for(i=0;i<4;i++)
- {
- xx=x+dx[i];
- yy=y+dy[i];
- if(c[xx][yy]==31000)
- {
- c[xx][yy]=c[x][y]+1;
- dr++;
- q[dr][0]=xx;
- q[dr][1]=yy;
- }
- if(xx==xf&&yy==yf)
- ok=1;
- }
- st++;
- }
- }
- int main()
- {
- citire();
- lee(b);
- afisare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment