Advertisement
Emiliatan

b554

Mar 29th, 2019
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. /* b554            */
  2. /* AC (2ms, 116KB) */
  3. #include <cstdio>
  4. #define max(x,y) ((x)>(y)?(x):(y))
  5.  
  6. using namespace std;
  7.  
  8. int n, ans;
  9. bool arr[7][7], vis[7][7]{};
  10.  
  11. void dfs(int i, int j, int step)
  12. {
  13.     if(i < 0 || j < 0 || i >= n || j >= n)
  14.     {
  15.         ans = max(ans, step - 1);
  16.         return;
  17.     }
  18.     if(!arr[i][j] || vis[i][j])
  19.         ans = max(ans,step - 1);
  20.     else
  21.     {
  22.         vis[i][j] = true;
  23.         dfs(i - 1, j, step + 1);
  24.         dfs(i + 1, j, step + 1);
  25.         dfs(i, j - 1, step + 1);
  26.         dfs(i, j + 1, step + 1);
  27.         vis[i][j] = false;
  28.     }
  29. }
  30.  
  31. int main()
  32. {
  33.     ans = -1;
  34.  
  35.     scanf("%d", &n); getchar();
  36.  
  37.     for(int i = 0, t; i < n; getchar(), i++)
  38.         for(int j = 0; j < n; arr[i][j] = t - '0', j++)
  39.             t = getchar();
  40.  
  41.     dfs(0, 0, 1);
  42.  
  43.     printf("%d", ans);
  44.  
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement