Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <vector>
- #include <cstdlib>
- using namespace std;
- const int maxn = 1001;
- bool v[maxn][maxn];
- int ans = 0;
- int findlongest(int i ,int j )
- {
- if(v[i][j]==0)return 0;
- v[i][j]=0;
- int maxans = 0;
- vector<int> vv;
- int temp;
- if(v[i-1][j])
- {
- temp = findlongest(i-1, j);
- if(temp!=0)vv.push_back(temp);
- }
- if(v[i][j-1])
- {
- temp = findlongest(i, j-1);
- if(temp!=0)vv.push_back(temp);
- }
- if(v[i+1][j])
- {
- temp = findlongest(i+1, j);
- if(temp!=0)vv.push_back(temp);
- }
- if(v[i][j+1])
- {
- temp = findlongest(i, j+1);
- if(temp!=0)vv.push_back(temp);
- }
- sort(vv.begin(),vv.end());
- for( int k = vv.size()-1;k>=0 && vv.size()-k>=2;k--)
- maxans+=vv[k];
- ans=max(ans,maxans+1);
- if(!vv.size())return 1;
- return vv[vv.size()-1]+1;
- }
- #define get(i) scanf("%c",&i);
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt","w",stdout);
- // memset(v,false,sizeof(v));
- int i,j;
- char c;
- int n ,m;
- cin>>n>>m;
- int k , t;
- for(i = 0 ;i<m;i++)
- for(j = 0;j<n;j++)
- {
- cin>>c;
- if(c == '.')v[i][j]=true;
- }
- for(j = 0;j<n;j++)
- for(i = 0 ;i<m;i++)
- if(v[i][j]){k = i;t = j;break;}
- ans = max(ans,findlongest(k,t));
- cout<<ans-1<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement