Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream f ("lee.in");
- ofstream g ("lee.out");
- struct pozitie
- {
- int lin,col;
- };
- pozitie c[100],ps,pb;
- int n,m,L[100][100],st[20],numar;
- int dl[]={-1,0,1,0},dc[]={0,1,0,-1};
- void citire()
- {
- f>>n>>m;
- f>>ps.lin>>ps.col;
- f>>pb.lin>>pb.col;
- for(int i=1;i<=n;i++)
- for(int j=1;j<=m;j++)
- f>>L[i][j];
- }
- void bordare()
- {
- for(int i=0;i<=n+1;i++)
- L[i][0]=L[i][m+1]=-1;
- for(int j=0;j<=m+1;j++)
- L[0][j]=L[n+1][j]=-1;
- }
- void Lee()
- {
- pozitie pc,pv;
- int p,u;
- p=u=1;
- c[p]=ps;
- L[ps.lin][ps.col]=1;
- while(p<=u && !L[pb.lin][pb.col])
- {
- pc=c[p++];
- for(int i=0;i<4;i++)
- {
- pv.lin=pc.lin+dl[i];
- pv.col=pc.col+dc[i];
- if(L[pv.lin][pv.col]==0)
- {
- c[++u]=pv;
- L[pv.lin][pv.col]=1+L[pc.lin][pc.col];
- }
- }
- }
- }
- void drum(int x, int y)
- {
- if(x!=ps.lin || y!=ps.col)
- {
- int vx,vy;
- for(int i=0;i<4;i++)
- {
- vx=x+dl[i];
- vy=y+dc[i];
- if(L[vx][vy]==L[x][y]-1)
- drum(vx,vy);
- }
- }
- g<<"("<<x<<","<<y<<")"<<'\n';
- }
- int main()
- {
- citire();
- bordare();
- Lee();
- if(L[pb.lin][pb.col]!=0)
- g<<L[pb.lin][pb.col];
- else
- g<<"Nu exista drum.";
- g<<'\n';
- drum(pb.lin,pb.col);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement