Advertisement
Dennnhhhickk

Untitled

Nov 28th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. program Project100110;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils;
  7.  
  8. const
  9. MAXIN = 1500;
  10.  
  11. type
  12. time = record
  13. x, y: integer;
  14. end;
  15.  
  16. var
  17. n, m, k: Int64;
  18. i, j, ans: integer;
  19. Ch: array[1..1500, 1..1500] of char;
  20. dp: array [0..1500, 1..1500] of Integer;
  21. mark: array [0..1500] of Integer;
  22. a: array [0..1500] of time;
  23.  
  24. procedure dfs(v: integer);
  25. var
  26. i: integer;
  27. begin
  28. Mark[v] := 1;
  29. for i := 1 to k do
  30. if (dp[v][i] = 1) and (Mark[i] = 0) then
  31. dfs(i);
  32. end;
  33.  
  34. begin
  35. assign(input,'input.txt');
  36.  
  37. assign(output,'output.txt');
  38. rewrite(output);
  39. reset(input);
  40. Readln(n, m);
  41. Ans := 0;
  42. k := 0;
  43.  
  44. for i := 1 to n do
  45. begin
  46. for j := 1 to m do
  47. read(ch[i][j]);
  48. Readln;
  49. end;
  50.  
  51. for i := 1 to n do
  52. for j := 1 TO m DO
  53. if (Ch[i][j] ='#') then
  54. begin
  55. Inc(k);
  56. a[k].x := i;
  57. a[k].y := j;
  58. end;
  59.  
  60. for i := 1 to k do
  61. for j := 1 to k do
  62. dp[i][j] := 0;
  63.  
  64. for i := 1 to k do
  65. Mark[i] := 0;
  66.  
  67. for i := 1 to k do
  68. for j := 1 to k do
  69. if ((Abs(a[i].x - a[j].x) = 1) and (Abs(a[i].y - a[j].y) < 1)) or ((Abs(a[i].x - a[j].x) < 1) and (Abs(a[i].y - a[j].y) = 1)) then
  70. dp[i][j] := 1;
  71.  
  72. for i := 1 to k do
  73. if (Mark[i] = 0) then
  74. begin
  75. dfs(i);
  76. Inc(ans);
  77. end;
  78.  
  79. Writeln(ans);
  80. Readln;
  81. readln;
  82. close(input);
  83. close(output);
  84. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement