[hdu 2102]bfs+注意INF
2024-08-29 23:50:37
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102
感觉这个题非常水,结果一直WA,最后发现居然是0x3f3f3f3f不够大导致的……把INF改成INF+INF就过了。
#include<bits/stdc++.h>
using namespace std; bool vis[][][];
char s[][][];
const int INF=0x3f3f3f3f; const int fx[]={,,,-};
const int fy[]={,-,,}; int bfs()
{
memset(vis,false,sizeof(vis));
queue< pair<int,int> > q;
while (!q.empty()) q.pop();
q.push(make_pair(*+*+,));
vis[][][]=true;
while (!q.empty())
{
int layer=q.front().first/;
int x=q.front().first%/;
int y=q.front().first%;
int st=q.front().second;
q.pop();
for (int i=;i<;i++)
{
int xx=x+fx[i];
int yy=y+fy[i];
if (s[layer][xx][yy]!='*' && !vis[layer][xx][yy])
{
if (s[layer][xx][yy]=='P' || (s[layer][xx][yy]=='#' && s[layer^][xx][yy]=='P')) return st+;
if (s[layer][xx][yy]=='#' && !vis[layer^][xx][yy])
{
vis[layer][xx][yy]=vis[layer^][xx][yy]=true;
q.push(make_pair((layer^)*+xx*+yy,st+));
}
if (s[layer][xx][yy]=='.' || s[layer][xx][yy]=='S')
{
vis[layer][xx][yy]=true;
q.push(make_pair(layer*+xx*+yy,st+));
}
}
}
}
return INF+INF;
} int main()
{
int T;
scanf("%d",&T);
while (T--)
{
memset(s,'*',sizeof(s));
int n,m,t;
cin >>n >>m >>t;
for (int _=;_<;_++)
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
cin >>s[_][i][j];
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
if (s[][i][j]=='#'&&s[][i][j]=='#' || s[][i][j]=='#'&&s[][i][j]=='*' || s[][i][j]=='*'&&s[][i][j]=='#') s[][i][j]=s[][i][j]='*';
if (bfs()<=t) cout <<"YES" <<endl;
else cout <<"NO" <<endl;
}
return ;
}
最新文章
- HTML5学习笔记一 简单学习HTML5
- 跨境B2B网站
- 解析Json需要设置Mime
- 初识轻量级Java开源框架 --- Spring
- CoordinatorLayout 自定义Behavior并不难,由简到难手把手带你飞
- php连接Access数据库错误及解决方法
- hibernate提供的5种检索数据方式
- APP store 官方统计工具的常见的Q&;A
- SpringMVC学习资料
- Linux命令-基本命令(1)
- Spring Boot 文件上传
- testng实现场景恢复
- Mesos源码分析(11): Mesos-Master接收到launchTasks消息
- [pig] pig 基础使用
- 365. Water and Jug Problem量杯灌水问题
- AngularJS监听数组变化
- Python:容器、迭代对象、迭代器、生成器及yield关键字
- CentOS 7安装zabbix-2.4.8监控
- eclipse中实现文本换行
- eclipse和myeclipse的he user operation is wating问题