Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream f("ubuph.in");
- ofstream g("ubuph.out");
- int n,m,v[1005][1005],c[1005][1005];
- long long b[1005][1005];
- queue < pair <int,int> >a;
- bool ok(int i,int j)
- {
- if(i<1 or j<1 or i>n or j>m)
- return 0;
- if(c[i][j]==-1)
- return 0;
- return 1;
- }
- void lee(int x, int y)
- {
- int i,j,k,l9,c9;
- int dx[]= {1,0,-1,0};
- int dy[]= {0,1,0,-1};
- c[x][y]=-1;
- a.push(make_pair(x,y));
- while(!a.empty())
- {
- i=a.front().first;
- j=a.front().second;
- c[i][j]=-1;
- a.pop();
- for(k=0; k<=3; k++)
- {
- l9=i+dx[k];
- c9=j+dy[k];
- if(ok(l9,c9)==1)
- {
- if(b[l9][c9]==-1)
- b[l9][c9]=v[i][j]+v[l9][c9];
- else if(b[i][j]+v[l9][c9]<b[l9][c9])
- b[l9][c9]=b[i][j]+v[l9][c9];
- a.push(make_pair(l9,c9));
- }
- }
- }
- }
- int main()
- {
- int i,j,xstart,ystart,xfinal,yfinal;
- f>>n>>m;
- for(i=1; i<=n; i++)
- for(j=1; j<=m; j++)
- {
- f>>v[i][j];
- b[i][j]=-1;
- }
- f>>xstart>>ystart>>xfinal>>yfinal;
- b[xstart][ystart]=v[xstart][ystart];
- lee(xstart,ystart);
- g<<b[xfinal][yfinal];
- g<<'\n';
- for(i=1; i<=n; i++)
- {
- for(j=1; j<=m; j++)
- g<<b[i][j]<<' ';
- g<<'\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement