Advertisement
a53

Lac

a53
Sep 17th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4. ifstream f("lac.in");
  5. ofstream g("lac.out");
  6.  
  7. int n,m,i,j,a[1001][1001],nri,nrp;
  8. int ic,sc,coada[2][1000001];
  9. int dx[]={-1,0,1,0};
  10. int dy[]={0,1,0,-1};
  11. void fill1(int x,int y)
  12. {
  13. int i;
  14. ic=1;
  15. sc=1;
  16. coada[0][1]=x;
  17. coada[1][1]=y;
  18. a[x][y]=0;
  19. while(ic<=sc)
  20. {
  21. for(i=0;i<=3;i++)
  22. if(a[coada[0][ic]+dx[i]][coada[1][ic]+dy[i]]==1)
  23. {
  24. sc++;
  25. coada[0][sc]=coada[0][ic]+dx[i];
  26. coada[1][sc]=coada[1][ic]+dy[i];
  27. a[coada[0][ic]+dx[i]][coada[1][ic]+dy[i]]=0;
  28. }
  29. ic++;
  30. }
  31. }
  32.  
  33. int main()
  34. {
  35. f>>n>>m;
  36. for(i=1;i<=n;i++)
  37. for(j=1;j<=m;j++)
  38. f>>a[i][j];
  39. for(i=1;i<=n;i++)
  40. if(a[i][1]==1)
  41. {
  42. nrp++;
  43. fill1(i,1);
  44. }
  45. for(i=1;i<=n;i++)
  46. if(a[i][m]==1)
  47. {
  48. nrp++;
  49. fill1(i,m);
  50. }
  51. for(j=1;j<=m;j++)
  52. if(a[1][j]==1)
  53. {
  54. nrp++;
  55. fill1(1,j);
  56. }
  57. for(j=1;j<=m;j++)
  58. if(a[n][j]==1)
  59. {
  60. nrp++;
  61. fill1(n,j);
  62. }
  63. for(i=2;i<=n-1;i++)
  64. for(j=1;j<=m-1;j++)
  65. if(a[i][j]==1)
  66. {
  67. nri++;
  68. fill1(i,j);
  69. }
  70. g<<nri<<' '<<nrp;
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement