Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125786
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 354
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-01 15:34
个人简介

不晓得说啥子

文章分类

全部博文(42)

文章存档

2015年(41)

2014年(1)

我的朋友

分类: C/C++

2015-04-04 10:32:55


点击(此处)折叠或打开

  1. #include<iostream>
  2. #include<queue>
  3. using namespace std;
  4. int n,m,T,zd,xd,yd,vist[2][11][11],flag;
  5. char map[2][11][11];
  6. int dir[4][2]={1,0,0,1,-1,0,0,-1};
  7. struct node
  8. {
  9.  int x;
  10.  int y;
  11.  int z;
  12.  int time;
  13. };
  14. void bfs()
  15. {
  16.  queue<node> s;
  17.  node a,b;
  18.  a.z=0;
  19.  a.x=0;
  20.  a.y=0;
  21.  a.time=0;
  22.  s.push(a);
  23.  while(!s.empty())
  24.  {
  25.   b=s.front();//cout<<b.z<<' '<<b.x<<' '<<b.y<<endl;
  26.   if(b.z==zd && b.x==xd && b.y==yd && b.time<=T)
  27.   {cout<<b.time<<' '<<endl;
  28.    flag=1;
  29.    return ;
  30.   }
  31.   s.pop();
  32.   for(int i=0;i<4;i++)
  33.   {
  34.    a.x=b.x+dir[i][0];
  35.    a.y=b.y+dir[i][1];
  36.    a.z=b.z;
  37.    if(a.x>=0 && a.x<n && a.y>=0 && a.y<m && map[a.z][a.x][a.y]!='*' && vist[a.z][a.x][a.y]==0)
  38.    {
  39.     vist[a.z][a.x][a.y]=1;
  40.     if(map[a.z][a.x][a.y]=='#')
  41.     {
  42.      if(a.z==0)
  43.      {
  44.                         a.z=1;
  45.      }
  46.      else
  47.      {
  48.       a.z=0;
  49.      }
  50.      if(map[a.z][a.x][a.y]!='*' && map[a.z][a.x][a.y]!='#' && vist[a.z][a.x][a.y]==0)
  51.      {
  52.       a.time=b.time+1;
  53.       if(a.time<=T)
  54.       {
  55.        s.push(a);
  56.            vist[a.z][a.x][a.y]=1;
  57.       }
  58.      }
  59.     }
  60.     else
  61.     {
  62.       a.time=b.time+1;
  63.       if(a.time<=T)
  64.       {
  65.         s.push(a);
  66.       }
  67.     }
  68.    }
  69.   }
  70.  }
  71. }
  72. int main()
  73. {
  74.  int i,j,k,s;
  75.  freopen("E:\\test.txt","r",stdin);
  76.     cin>>s;
  77.  while(s--)
  78.  {
  79.   cin>>n>>m>>T;
  80.   for(k=0;k<=1;k++)
  81.   {
  82.    for(i=0;i<n;i++)
  83.    {
  84.     for(j=0;j<m;j++)
  85.     {
  86.      cin>>map[k][i][j];
  87.      if(map[k][i][j]=='P')
  88.      {
  89.       zd=k;
  90.       xd=i;
  91.       yd=j;
  92.      }
  93.     }
  94.    }
  95.   }
  96.   flag=0;
  97.   memset(vist,0,sizeof(vist));
  98.   vist[0][0][0]=1;
  99.      bfs();
  100.   if(flag==1)
  101.   {
  102.    cout<<"YES"<<endl;
  103.   }
  104.   else
  105.   {
  106.    cout<<"NO"<<endl;
  107.   }
  108.  }
  109.  return 0;
  110. }

阅读(1011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~