giabinh

510B_FoxAndTwoDots

Sep 21st, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. char a[55][55];
  6. int x, y, n, m;
  7. bool found = false, visited[55][55];
  8. string s;
  9.  
  10. void Visit(int u, int v) {
  11.     visited[u][v] = true;
  12.  
  13.     if (!found) {
  14. /*
  15.         if (a[u-1][v] == a[u][v])
  16.             if (visited[u-1][v])
  17.             {
  18.                 found = true;
  19.                 return;
  20.             } else Visit(u-1, v);
  21. */
  22.         if (a[u][v+1] == a[u][v])
  23.             if (visited[u][v+1])
  24.             {
  25.                 found = true;
  26.                 return;
  27.             } else Visit(u, v+1);
  28.  
  29.         if (a[u+1][v] == a[u][v])
  30.             if (visited[u+1][v])
  31.             {
  32.                 found = true;
  33.                 return;
  34.             } else Visit(u+1, v);
  35. /*
  36.         if (a[u][v-1] == a[u][v])
  37.             if (visited[u][v-1])
  38.             {
  39.                 found = true;
  40.                 return;
  41.             }  else Visit(u, v-1);
  42. */
  43.     }
  44. }
  45.  
  46. int main() {
  47.     #ifndef ONLINE_JUDGE
  48.         freopen("cf510b.inp", "r", stdin);
  49.     #endif // ONLINE_JUDGE
  50.  
  51.     scanf("%d%d", &n, &m); getline(cin, s);
  52.     for (int i=1; i<=n; ++i)
  53.     {
  54.         getline(cin, s);
  55.         for (int j=0; j<s.size(); ++j) a[i][j+1] = s[j];
  56.     }
  57.  
  58.     for (int i=0; i<=n+1; ++i) a[i][0] = a[i][m+1] = '0';
  59.     for (int i=0; i<=m+1; ++i) a[0][i] = a[n+1][i] = '0';
  60.     memset(visited, false, sizeof(visited));
  61.  
  62.     for (int i=1; i<=n; ++i)
  63.     {
  64.         for (int j=1; j<=m; ++j)
  65.         {
  66.             if (a[i][j] != '0' && !visited[i][j]) Visit(i, j);
  67.             if (found) break;
  68.         }
  69.  
  70.         if (found) break;
  71.     }
  72.  
  73.     if (!found) printf("No\n"); else printf("Yes\n");
  74.  
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment