Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef pair<int, int> ipair;
- int mx=INT_MAX,m,n;
- char v[1001][1001];
- int dist[1001][1001];
- int r[]={1,-1,0,0};
- int k[]={0,0,1,-1};
- void dijkstra(int i,int j)
- {
- dist[i][j]=0;
- priority_queue< pair<int,ipair>,vector<pair<int,ipair>> , greater<pair<int,ipair>> >pq;
- pq.push(make_pair(0,make_pair(i,j)));
- while(!pq.empty())
- {
- int x,y;
- x=pq.top().second.first;
- y=pq.top().second.second;
- pq.pop();
- for(int t=0;t<4;t++)
- {
- int x1=x+r[t];
- int y1=y+k[t];
- if(x1>=0 && x1<m && y1>=0 &&y1<n)
- {
- if(v[x1][y1]!='*')
- {
- if(dist[x1][y1]>dist[x][y]+1)
- {
- dist[x1][y1]=1+dist[x][y];
- pq.push(make_pair(dist[x1][y1],make_pair(x1,y1)));
- }
- }
- }
- }
- }
- }
- int main() {
- int q,s1,s2,i,j;
- cin>>m>>n>>q;
- for(i=0;i<m;i++)
- for(j=0;j<n;j++)
- dist[i][j]=INT_MAX;
- for(i=0;i<m;i++)
- for(j=0;j<n;j++)cin>>v[i][j];
- cin>>s1>>s2;
- dijkstra(s1-1,s2-1);
- for(i=0;i<q;i++)
- {
- int a,b;
- cin>>a>>b;
- a--;
- b--;
- if(dist[a][b]!=mx)cout<<dist[a][b]<<endl;
- else cout<<-1<<endl;
- }
- }
Add Comment
Please, Sign In to add comment