Advertisement
aurko96

Lightoj- 1066

Sep 12th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. char area[100][100];
  4. bool vis[100][100];
  5. int dx[]={1,-1,0,0};
  6. int dy[]={0,0,-1,1};
  7. int row,step,counts,flag,flag2;
  8. void dfs(int r,int c,char ch)
  9. {
  10.     if(flag2) return;
  11.     if(r<0 || c<0 || r>=row || c>=row) return;
  12.     if(area[r][c]=='#') return;
  13.     if(vis[r][c]==1) return;
  14.     if(area[r][c]!='.' && area[r][c]!=(ch+1))
  15.     {
  16.         return;
  17.     }
  18.     else if(area[r][c]!='.' && area[r][c]==(ch+1))
  19.     {
  20.         ch=ch+1;
  21.         if(ch-64==flag)
  22.         {
  23.             flag2=1;
  24.             return;
  25.         }
  26.     }
  27.     vis[r][c]=1;
  28.     counts++;
  29.     for(int i=0;i<4;i++)
  30.     {
  31.         dfs(r+dx[i],c+dy[i],ch);
  32.     }
  33.  
  34.     return;
  35. }
  36. int main()
  37. {
  38.     int i,j,k,n,x,y,z,t;
  39.     scanf("%d",&t);
  40.     for(i=1;i<=t;i++)
  41.     {
  42.         memset(vis,0,sizeof(vis));
  43.         counts=0;
  44.         flag=0;
  45.         flag2=0;
  46.         scanf("%d",&row);
  47.         for(j=0;j<row;j++)
  48.         {
  49.             for(k=0;k<row;k++)
  50.             {
  51.                 cin>>area[j][k];
  52.                 if(area[j][k]>='A' && area[j][k]<='Z')
  53.                 {
  54.                     flag++;
  55.                 }
  56.                 if(area[j][k]=='A')
  57.                 {
  58.                     x=j;
  59.                     y=k;
  60.                 }
  61.             }
  62.         }
  63.         dfs(x,y,64);
  64.         if(flag2)
  65.         {
  66.             printf("Case %d: %d\n",i,counts);
  67.         }
  68.         else
  69.         {
  70.             printf("Case %d: Impossible",i);
  71.         }
  72.     }
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement