Source Code Problem: 1164 User: zhouxc Memory: 376K Time: 16MS Language: G++ Result: Accepted Source Code #include "iostream" using namespace std; int module[100][100]; bool visit[100][100]; int c,r,number=0,s,size=0; int Dfs(int m,int n) { s++; visit[m][n]=true; // cout<<m<<" "<<n<<endl; if(module[m][n]%2==0) { if(!visit[m][n-1]) Dfs(m,n-1); } module[m][n]>>=1; if(module[m][n]%2==0) { if(!visit[m-1][n]) Dfs(m-1,n); } module[m][n]>>=1; //cout<<module[m][n]<<endl; if(module[m][n]%2==0) { if(!visit[m][n+1]) Dfs(m,n+1); } module[m][n]>>=1; if(module[m][n]%2==0) { if(!visit[m+1][n]) Dfs(m+1,n); } } int main() { scanf("%d%d",&c,&r); memset(visit,false,sizeof(visit)); for(int i=1;i<=c;++i) { for(int j=1;j<=r;++j) scanf("%d",&module[i][j]); } for(int m=1;m<=c;m++) { for(int n=1;n<=r;n++) if(!visit[m][n]) { s=0; number++; Dfs(m,n); if(size<s) size=s; } } printf("%d/n%d/n",number,size); return 0; }