fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector< vector<int> > graph(1001,vector<int>(1001,0));
  5. int visited[1001][1001];
  6. int tmp,n,m;
  7. void slv(int i,int j){
  8.  
  9. visited[i][j]=1;
  10. tmp++;
  11.  
  12. if( (i+1<n) && (graph[i+1][j]==1) && (visited[i+1][j]==0))
  13. slv(i+1,j);
  14. if((i+1<n) && (j+1<m) && (graph[i+1][j+1]==1) && (visited[i+1][j]==0))
  15. slv(i+1,j+1);
  16. if((i-1>=0) && (graph[i-1][j]==1) && (visited[i+1][j]==0))
  17. slv(i-1,j);
  18. if((i-1>=0) && (j-1 >=0) && (graph[i-1][j-1]==1) && (visited[i+1][j]==0))
  19. slv(i-1,j-1);
  20. if((j+1<n) && (graph[i][j+1]==1) && (visited[i+1][j]==0))
  21. slv(i,j+1);
  22. if((j-1>=0 )&& (graph[i][j-1]==1) && (visited[i+1][j]==0))
  23. slv(i,j-1);
  24. if((i-1>=0) && (j+1<m) && (graph[i-1][j+1]==1) && (visited[i+1][j]==0))
  25. slv(i-1,j+1);
  26. if((i+1<n) && (j-1>=0) && (graph[i+1][j-1]==1) && (visited[i+1][j]==0))
  27. slv(i+1,j-1);
  28.  
  29.  
  30. }
  31. int main()
  32. {
  33. int t, i,j,k,trps,mxm;
  34. cin>>t;
  35. for(int t1=0;t1<t;t1++){
  36. tmp=0;
  37. cin>>n>>m;
  38. trps=0;
  39. mxm=0;
  40. for(i=0;i<=n;i++)for( j=0;j<=m;j++){visited[i][j]=0;}
  41. for(i=0;i<n;i++)
  42. for(j=0;j<m;j++)
  43. cin>>graph[i][j];
  44. for(i=0;i<n;i++){
  45. for(j=0;j<m;j++){
  46. if(graph[i][j]==1 && visited[i][j]==0){
  47. slv(i,j);
  48. trps++;
  49. if(mxm<tmp)mxm=tmp;
  50. }
  51. }
  52. }
  53. cout<<trps<<" "<<mxm<<endl;
  54.  
  55. }
  56.  
  57.  
  58. return 0;
  59. }
  60.  
Time limit exceeded #stdin #stdout 5s 2211328KB
stdin
2
4 6
0 0 0 1 1 0 
1 1 0 0 0 0 
0 1 0 0 0 0 
0 0 1 0 0 0 
6 4
1 1 1 1 
0 0 0 0 
0 1 0 0 
1 0 1 0 
1 0 0 0 
1 0 0 0
stdout
Standard output is empty