• Source
    1. #include <bits/stdc++.h>
    2. #define fast ios::sync_with_stdio(NULL); cin.tie(0); cout.tie(0)
    3. using namespace std;
    4.  
    5. void setIO(string name = "")
    6. {
    7. freopen((name + ".in").c_str(), "r", stdin);
    8. freopen((name + ".out").c_str(), "w", stdout);
    9. }
    10.  
    11. int n, m, test, l, r, mid;
    12. int g[500][500];
    13. int w[500][500];
    14. bool vis[500][500];
    15. int dx[] = {0, 0, 1, -1};
    16. int dy[] = {1, -1, 0, 0};
    17.  
    18. bool valid(int x, int y)
    19. {
    20. if(x < 0 || x >= n || y < 0 || y >= m) return false;
    21. return true;
    22. }
    23.  
    24. void dfs(int x, int y)
    25. {
    26. vis[x][y] = true;
    27. for(int i = 0; i < 4; ++i)
    28. {
    29. if(valid(x+dx[i], y+dy[i]) && !vis[x+dx[i]][y+dy[i]] && abs(g[x+dx[i]][y+dy[i]]-g[x][y]) <= test)
    30. {
    31. dfs(x+dx[i], y+dy[i]);
    32. }
    33. }
    34. }
    35.  
    36. bool ok(int x)
    37. {
    38. test = x;
    39. memset(vis, false, sizeof(vis));
    40. for(int i = 0; i < n; ++i)
    41. {
    42. for(int j = 0; j < m; ++j)
    43. {
    44. if(w[i][j])
    45. {
    46. dfs(i, j);
    47. break;
    48. }
    49. }
    50. }
    51. for(int i = 0; i < n; ++i)
    52. {
    53. for(int j = 0; j < m; ++j)
    54. {
    55. if(w[i][j] && !vis[i][j])
    56. {
    57. return false;
    58. }
    59. }
    60. }
    61. return true;
    62. }
    63.  
    64. int32_t main()
    65. {
    66. fast;
    67. //setIO("ccski");
    68. cin>>n>>m;
    69. for(int i = 0; i < n; ++i)
    70. {
    71. for(int j = 0; j < m; ++j)
    72. {
    73. cin>>g[i][j];
    74. }
    75. }
    76. for(int i = 0; i < n; ++i)
    77. {
    78. for(int j = 0; j < m; ++j)
    79. {
    80. cin>>w[i][j];
    81. }
    82. }
    83. l = 0, r = 1e9;
    84. while(l < r)
    85. {
    86. mid = l + (r-l)/2;
    87. if(ok(mid))
    88. {
    89. r = mid;
    90. }
    91. else
    92. {
    93. l = mid+1;
    94. }
    95. }
    96. cout<<l;
    97. return 0;
    98. }
    99.