Advertisement
Guest User

Untitled

a guest
Mar 29th, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdio>
  4. #include <map>
  5.  
  6. using namespace std;
  7.  
  8. int n, m;
  9. int color[103][103];
  10. int mas[103][103];
  11. int fl = 0;
  12. vector <pair <int, int> > answer;
  13. int shet = 0;
  14. void dfs(int x, int y) {
  15. color[x][y] = 1;
  16. int dx[] = {0, 0, -1, 1};
  17. int dy[] = {1, -1, 0, 0};
  18. for(int i = 0; i < 4; ++i) {
  19. if((-1 < x + dx[i]) && (x + dx[i] < n + 2) && (-1 < y + dy[i]) && (y + dy[i] < m + 2)) {
  20. if(color[x + dx[i]][y + dy[i]] == 0 && (mas[x + dx[i]][y + dy[i]] >= mas[x][y])) {
  21. dfs(x + dx[i], y + dy[i]);
  22. }
  23. }
  24. }
  25. color[x][y] = 2;
  26. }
  27.  
  28. int main() {
  29. cin >> n >> m;
  30. for(int i = 0; i < 103; ++i)
  31. for(int j = 0; j < 103; ++j)
  32. mas[i][j] = 100010;
  33. for(int i = 1; i < n + 1; ++i)
  34. for(int j = 1; j < m + 1; ++j)
  35. cin >> mas[i][j];
  36. for(int i = 1; i < n + 1; ++i)
  37. for(int j = 1; j < m + 1; ++j)
  38. if(color[i][j] != 2) {
  39. int dx[] = {0, 0, -1, 1};
  40. int dy[] = {1, -1, 0, 0};
  41. for(int z = 0; z < 4; ++z) {
  42. if((-1 < i + dx[z]) && (i + dx[z] < n + 2) && (-1 < j + dy[z]) && (j + dy[z] < m + 2)) {
  43. if(mas[i][j] > mas[i + dx[z]][j + dy[z]])
  44. fl = 1;
  45. }
  46. }
  47. if(fl == 1)
  48. dfs(i, j);
  49. fl = 0;
  50. }
  51. int vodostok = 0;
  52. for(int i = 1; i < n + 1; ++i)
  53. for(int j = 1; j < m + 1; ++j)
  54. if(color[i][j] != 2) {
  55. ++vodostok;
  56. dfs(i, j);
  57. }
  58. cout << vodostok;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement