Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using pi=pair<int,int>;
- using pc=pair<int,char>;
- using pii = pair < pc , pi >;
- int n,m;
- int dx[]={1,-1,0,0};
- int dy[]={0,0,1,-1};
- bool position(int i,int j){
- return i>=1 and i<=n and j>=1 and j<=m ;
- }
- int main(){
- int si,sj;
- scanf("%d%d",&n,&m);
- char ar[n+10][m+10];
- bool visited[n+10][m+10];
- priority_queue <pii,vector<pii>,greater<pii>> q;
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- scanf(" %c",&ar[i][j]);
- visited[i][j]=false;
- if(ar[i][j]=='S'){
- q.push({ {0,'S'},{i,j} });
- }
- else if(ar[i][j]=='*'){
- q.push({ {0,'*'},{i,j} });
- }
- }
- }
- while(q.size()>0){
- int d,ui,uj;
- char opr;
- d=q.top().first.first;
- opr=q.top().first.second;
- ui=q.top().second.first;
- uj=q.top().second.second;
- q.pop();
- if(ar[ui][uj]=='D'){
- if(opr=='*'){
- continue;
- }
- else{
- printf("%d",d);
- return 0;
- }
- }
- if(ar[ui][uj]=='X' || visited[ui][uj])
- continue;
- visited[ui][uj]=true;
- for(int i=0;i<4;i++){
- int vi,vj;
- vi=ui+dx[i];
- vj=uj+dy[i];
- if(position(vi,vj) and !visited[vi][vj]){
- q.push({ {d+1,opr} , {vi,vj} });
- }
- }
- }
- printf("KAKTUS");
- return 0;
- }
Add Comment
Please, Sign In to add comment