#include #include using namespace std; int main() { int a,b; cin>>a>>b; char mat[a][b]; queueQ; int poseten[a][b]; int rs,ks,re,ke; for(int i=0;i>mat[i][j]; if(mat[i][j]=='S') { rs=i; ks=j; } if(mat[i][j]=='E') { re=i; ke=j; } poseten[i][j]=false; } } int s[a][b]; int e[a][b]; for(int i=0;i < a;i++) { for(int j=0;j=0 && poseten[ci][cj-1]!=true && mat[ci][cj-1]!='#') { Q.push(ci); Q.push(cj-1); Q.push(n+1); poseten[ci][cj-1]=true; } if(cj-1>=0 && poseten[ci][cj-1]!=true && mat[ci][cj-1]=='#') { s[ci][cj-1]=n+1; } if(ci+1=0 && poseten[ci-1][cj]!=true && mat[ci-1][cj]!='#') { Q.push(ci-1); Q.push(cj); Q.push(n+1); poseten[ci-1][cj]=true; } if(ci-1>=0 && poseten[ci-1][cj]!=true && mat[ci-1][cj]=='#') { s[ci-1][cj]=n+1; } } for(int i =0 ; i < a; i++) { for(int j= 0; j < b; j++) { poseten[i][j] = false; } } Q.push(re); Q.push(ke); poseten[re][ke] = true; int kolkuE=0; Q.push(kolkuE); while(!Q.empty() ) { int ci=Q.front(); Q.pop(); int cj=Q.front(); Q.pop(); int n=Q.front(); Q.pop(); if(cj+1=0 && poseten[ci][cj-1]!=true && mat[ci][cj-1]!='#') { Q.push(ci); Q.push(cj-1); Q.push(n+1); poseten[ci][cj-1]=true; } if(cj-1>=0 && poseten[ci][cj-1]!=true && mat[ci][cj-1]=='#') { e[ci][cj-1]=n+1; } if(ci+1=0 && poseten[ci-1][cj]!=true && mat[ci-1][cj]!='#') { Q.push(ci-1); Q.push(cj); Q.push(n+1); poseten[ci-1][cj]=true; } if(ci-1>=0 && poseten[ci-1][cj]!=true && mat[ci-1][cj]=='#') { e[ci-1][cj]=n+1; } } int najgolem=-1; for(int i=0;i