#include #include using namespace std; int a[505][505],sol[505][505],parc[505][505],n,m,solt,nr; string s; void parcurge (int i,int j,int preci,int precj) { parc[i][j]=nr; if (preci!=i-1 && a[i-1][j]==1) { if (parc[i-1][j]>0) { sol[i][j]=parc[i-1][j]; }else { ++nr; parcurge(i-1,j,i,j); if (sol[i-1][j]!=0) if (sol[i-1][j]<=sol[i][j] || sol[i][j]==0) sol[i][j]=sol[i-1][j]; } } if (precj!=j-1 && a[i][j-1]==1) { if (parc[i][j-1]>0) { sol[i][j]=parc[i][j-1]; }else { ++nr; parcurge(i,j-1,i,j); if (sol[i][j-1]!=0) if (sol[i][j-1]0) { sol[i][j]=parc[i+1][j]; }else { ++nr; parcurge(i+1,j,i,j); if (sol[i+1][j]!=0) if (sol[i+1][j]0) { sol[i][j]=parc[i][j+1]; }else { ++nr; parcurge(i,j+1,i,j); if (sol[i][j+1]!=0) if (sol[i][j+1]>n>>m; getline(cin,s); for (int i=1;i<=n;++i) { getline(cin,s); for (int j=1;j<=m;++j) { if (s[j-1]=='1') a[i][j]=1; } } for (int i=1;i<=n;++i) { for (int j=1;j<=m;++j) { if (parc[i][j]==0 && a[i][j]==1) nr=1,parcurge(i,j,0,0); if (sol[i][j]>0) { ++solt;} } } cout<