fork(2) download
  1. #include<bits/stdc++.h>
  2. #define inrg(x,y,ln) (x>=0 && x<n && y>=0 && y<m && ln<l)
  3. using namespace std;
  4. string s="ALLIZZWELL";
  5. int l=s.length();
  6. int n,m;
  7. char mat[200][200];
  8. int vis[200][200];
  9. int dx[]={0,-1,1};
  10. int dy[]={0,-1,1};
  11. void fill()
  12. {
  13. for(int i=0;i<n;i++)
  14. {
  15. for(int j=0;j<m;j++)
  16. vis[i][j]=0;
  17. }
  18. }
  19. bool dfs(int x,int y,int ln)
  20. {
  21. if(ln==l-1 && mat[x][y]==s[ln] && !vis[x][y]) return true;
  22. if(mat[x][y]!=s[ln]) return false;
  23. int f=0;
  24. vis[x][y]=1;
  25. for(int i=0;i<3;i++)
  26. {
  27. for(int j=0;j<3;j++)
  28. {
  29. if(i==0 && j==0) continue;
  30. if(inrg(x+dx[i],y+dy[j],ln))
  31. {
  32. if(dfs(x+dx[i],y+dy[j],ln+1))
  33. {
  34. f=1;
  35. break;
  36. }
  37. }
  38. }
  39. }
  40. if(f) return true;
  41. return false;
  42. }
  43. int main() {
  44. int t;
  45. cin>>t;
  46. while(t--)
  47. {
  48. int f=0;
  49. cin>>n>>m;
  50. for(int i=0;i<n;i++)
  51. cin>>mat[i];
  52. for(int i=0;i<n;i++)
  53. {
  54. for(int j=0;j<m;j++)
  55. {
  56. fill();
  57. if(dfs(i,j,0))
  58. {
  59. f=1;
  60. }
  61. }
  62. }
  63. if(f)
  64. cout<<"YES"<<endl;
  65. else
  66. cout<<"NO"<<endl;
  67. }
  68. return 0;
  69. }
Success #stdin #stdout 0s 16264KB
stdin
1 
4 5 
ALL.. 
..... 
ALLIZ 
LLEWZ 
stdout
YES