Advertisement
jeff69

b333

Sep 13th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
4CS 1.69 KB | None | 0 0
  1.  #include<bits/stdc++.h>
  2. using namespace std;
  3. char a[502][502];
  4. int vis[502][502];
  5. bool dom[501][501];
  6.         int n,m,q;
  7. int dx[4]={0,1,0,-1};int dy[4]={1,0,-1,0};
  8.  bool check(int x,int y)
  9. {
  10.     if(x>=0&&x<n&&y>=0&&y<m){
  11.             if(a[x][y]=='#')return 0;
  12. return 1;}
  13.     else return 0;
  14. }
  15. int dfs(int x,int y,int pax,int pay)
  16. {
  17.     if(!check(x,y))return 0;
  18.     if(vis[x][y]!=-1)return vis[x][y];
  19.     if(dom[x][y])return 0;
  20.     dom[x][y]=1;
  21.     //cout<<x<<' '<<y<<endl;
  22.     int ans=(bool)(a[x][y]=='C');
  23.     for(int i=0;i<4;i++)
  24.     {
  25.         int nx,ny;
  26.         nx=x+dx[i];
  27.         ny=y+dy[i];
  28.         if(check(nx,ny))
  29.             {
  30.  
  31.                 if(nx==pax&&ny==pay)continue;
  32.                 ans+=dfs(nx,ny,x,y);
  33.  
  34.             }
  35.     }
  36.     return ans;
  37. }
  38. void dfsset(int x,int y,int pax,int pay,int m)
  39. {
  40.        //cout<<x<<' '<<y<<'\n';
  41.  
  42.     if(vis[x][y]!=-1)return;
  43.  
  44.     vis[x][y]=m;
  45.      for(int i=0;i<4;i++)
  46.     {
  47.         int nx,ny;
  48.         nx=x+dx[i];
  49.         ny=y+dy[i];
  50.         if(check(nx,ny))
  51.             {
  52.                 if(nx==pax&&ny==pay)continue;
  53.                 dfsset(nx,ny,x,y,m);
  54.              }
  55.     }
  56.     return ;
  57. }
  58. int main()
  59. {
  60. //freopen("out.txt","w",stdout);
  61.     int t;cin>>t;
  62.     int b=1;
  63.     while (t--)
  64.     {
  65.         memset(dom,0,sizeof dom);
  66.         memset(vis,-1,sizeof vis);
  67.         cin>>n>>m>>q;
  68.         for(int i=0;i<n;i++)
  69.             for(int j=0;j<m;j++)cin>>a[i][j];
  70.             cout<<"Case "<<b<<":"<<endl;
  71.  
  72. b++;
  73.         while(q--)
  74.         {
  75.             int x,y;
  76.             cin>>x>>y;
  77.             int ss=dfs(x-1,y-1,n,n);
  78.  
  79.             cout<<ss<<endl;
  80.             dfsset(x-1,y-1,n,n,ss);
  81.         }
  82.     }
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement