FZU2150 Fire Game(BFS)
2015-12-15 21:06
302 查看
题解
题意 :就是有两个熊孩子要把一个正方形上的草都给烧掉,他俩同时放火烧,烧第一块的时候是不花时间的,每一块着火的都可以在下一秒烧向上下左右四块#代表草地,.代表着不能烧的。问你最少花多少时间可以烧掉,如果烧不掉就输出-1
直接遇到草就加入队伍中,然后BFS,再暴力枚举两个草丛求最小
代码
#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include <set> #include <ctime> #include <cmath> #include <cctype> using namespace std; #define MAX 100000 #define LL long long int cas=1,T; const int INF = 99999999 ; int n,m; char ch[15][15]; int cnt; int vis[110][110]; int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; struct Node { int x,y; int step; }q1,q2,mapp[150]; int bfs(int x1,int y1,int x2,int y2) { int maxx = 0; queue<Node>que; q1.x=x1,q1.y=y1,q1.step=0; q2.x=x2,q2.y=y2,q2.step=0; que.push(q1); que.push(q2); while (!que.empty()) { struct Node st1,st=que.front(); que.pop(); for (int i =0;i<4;i++) { int xx = st.x+dir[i][0]; int yy = st.y+dir[i][1]; if (!vis[xx][yy]&& ch[xx][yy]=='#'&&(xx>=0 && xx<n&&yy>=0&&yy<m)) { vis[xx][yy]=1; st1.x=xx; st1.y==yy; st1.step=st.step+1; que.push(st1); } } maxx=max(maxx,st.step); } return maxx; } int main() { scanf("%d",&T); while (T--) { scanf("%d%d",&n,&m); cnt=0; for (int j = 0;j<n;j++) { scanf("%s",ch[j]); for (int k = 0;k<m;k++) if (ch[j][k]=='#') { cnt++; mapp[cnt].x=j; mapp[cnt].y=k; } } printf("Case %d: ",cas++); if (cnt<=2) { printf("0\n"); continue; } int minn=INF; for (int j = 0;j<cnt;j++) for (int k = j;k<cnt;k++) { memset(vis,0,sizeof(vis)); vis[mapp[j].x][mapp[j].y]=1; vis[mapp[k].x][mapp[k].y]=1; bool flag = false; int minnn=bfs(mapp[j].x,mapp[j].y,mapp[k].x,mapp[k].y); for (int h = 0;h<n;h++) { for (int l = 0;l<m;l++) { if (ch[h][l]!='#') continue; if (!vis[h][l]) { flag=true; break; } if (flag) break; } if (!flag) minn=min(minn,minnn); } } if (minn==INF) printf("-1\n"); else printf("%d\n",minn); } //freopen("in","r",stdin); //scanf("%d",&T); //printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC); return 0; }
相关文章推荐
- Oracle与MySQL的几点区别
- invalid resource directory name 无效的资源目录名
- JavaEE__将应用部署到Tomcat根目录的方法
- 完全二叉树的创建与堆排序代码实现
- POJ 2135:Farm Tour 邻接表最小费用最大流
- OpenCV Mat数据类型及位数总结
- JustWeEngine - 轻量级游戏框架
- nl2br函数
- 如何用滚动视图实现新闻导航滚动条?
- CSS盒模型
- [C/C++][经典探讨]类继承中,通过基类指针delete释放,是否会造成内存泄漏 http://blog.csdn.net/code_godfather/article/details/66480
- Spring 3 MVC深入研究
- 构造函数、拷贝构造函数、赋值操作符
- This is test
- jquery学习随笔(简单选择器)
- UVa 109 - SCUD Busters(凸包计算)
- 创建BDC(Business Data Connectivity Service)
- RFID扫描APP Android
- DefaultHttpClient is deprecated
- 实战开发经验: 如何降低CPU占用率