#include #include #include using namespace std; ifstream fin("concurs.in"); queue > coada; int a[110][110]; int n, m, j, i; inline bool on_map(int x, int y) { if(x>=1 && x<=n && y>=1 && y<=m) return 1; return 0; } int main() { cin>>n>>m; char c; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { cin>>c; if(c=='.') a[i][j]=0; else a[i][j]=-1; } } coada.push(make_pair(1, 1)); if(!a[1][1]) a[1][1]=1; pair nod; while(coada.size()) { nod=coada.front(); coada.pop(); if(!on_map(nod.first, nod.second)) continue; if(!a[nod.first+1][nod.second]) { a[nod.first+1][nod.second]=a[nod.first][nod.second]+1; coada.push(make_pair(nod.first+1, nod.second)); } if(!a[nod.first][nod.second+1]) { a[nod.first][nod.second+1]=a[nod.first][nod.second]+1; coada.push(make_pair(nod.first, nod.second+1)); } } int s=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(a[i][j]>0) s=max(s, a[i][j]); } } cout<