Guest User

Untitled

a guest
Nov 16th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5.  
  6. char T[500][500];
  7. bool log;
  8. bool vis[500][500];
  9.  
  10. bool f(int posi,int posj){
  11. int cont=0;
  12. if(T[posi+1][posj]=='1')cont++;
  13. if(T[posi-1][posj]=='1')cont++;
  14. if(T[posi][posj+1]=='1')cont++;
  15. if(T[posi][posj-1]=='1')cont++;
  16. // cout<<cont<<endl;
  17. if(cont==1)return true;
  18. return false;
  19. }
  20.  
  21. void dfs(int posi,int posj){
  22. int cont=0;
  23. // cout<<posi<<" - "<<posj<<endl;
  24. if(vis[posi][posj])return;
  25. vis[posi][posj]=true;
  26. if(T[posi+1][posj]=='1')cont++,dfs(posi+1,posj);
  27. if(T[posi-1][posj]=='1')cont++,dfs(posi-1,posj);
  28. if(T[posi][posj+1]=='1')cont++,dfs(posi,posj+1);
  29. if(T[posi][posj-1]=='1')cont++,dfs(posi,posj-1);
  30. if(cont==2)return;
  31. if(cont==1||cont==0){
  32. // cout<<posi<<" "<<posj<<endl;
  33. if(log)return;
  34. if(T[posi+1][posj]=='0'){
  35. log=f(posi+1,posj);
  36. if(log)return;
  37. }
  38. if(T[posi-1][posj]=='0'){
  39. log=f(posi-1,posj);
  40. if(log)return;
  41. }
  42. if(T[posi][posj+1]=='0'){
  43. log=f(posi,posj+1);
  44. if(log)return;
  45. }
  46. if(T[posi][posj-1]=='0'){
  47. log=f(posi,posj-1);
  48. if(log)return;
  49. }
  50.  
  51. }
  52. }
  53.  
  54. void bl(int posi,int posj){
  55. if(vis[posi][posj])return;
  56. vis[posi][posj]=true;
  57. if(T[posi+1][posj]=='1')dfs(posi+1,posj);
  58. if(T[posi-1][posj]=='1')dfs(posi-1,posj);
  59. if(T[posi][posj+1]=='1')dfs(posi,posj+1);
  60. if(T[posi][posj-1]=='1')dfs(posi,posj-1);
  61. }
  62.  
  63. int main(){
  64. while(1){
  65. int a,b;
  66. memset(vis,false,sizeof(vis));
  67. memset(T,'A',sizeof(T));
  68. scanf("%d%d",&a,&b);
  69. if(a==0&&b==0)break;
  70. for(int i=1;i<=a;i++){
  71. for(int j=1;j<=b;j++){
  72. cin>>T[i][j];
  73. }
  74. }
  75. /*
  76. for(int i=1;i<=a;i++){
  77. for(int j=1;j<=b;j++){
  78. cout<<T[i][j];
  79. }
  80. cout<<endl;
  81. }*/
  82.  
  83. int contt=0;
  84. for(int i=1;i<=a;i++){
  85. for(int j=1;j<=b;j++){
  86. if(vis[i][j])continue;
  87. if(T[i][j]=='1'&&!vis[i][j]){
  88. log=false;
  89. dfs(i,j);
  90. // cout<<i<<" "<<j<<endl;
  91. if(!log)contt++;
  92. }
  93. }
  94. }
  95. printf("%d\n",contt);
  96.  
  97.  
  98. }
  99. }
Add Comment
Please, Sign In to add comment