FZU 2150 Fire Game 多起点BFS
来源:互联网 发布:网络推广部职责 编辑:程序博客网 时间:2024/05/21 18:34
题意:给出一个maze,从任意两点#同时开始覆盖,寻找覆盖所有#的最短时间,若不能全部覆盖,则输出-1。
思路:由于maze很小,10*10而已。枚举任意两个#做bfs就行。
<span style="font-size:14px;">#include <iostream>#include <queue>#include <cstdio>#include <cstring>using namespace std;int dirx[]={0,-1,1,0};int diry[]={-1,0,0,1};typedef struct Node{ int x; int y; int step; Node(int xx,int yy,int ss){ x=xx;y=yy;step=ss; }}Node;char a[30][30],maze[30][30];bool flag2;queue <Node> que;queue <Node> aim;const int INF=0x3f3f3f3f;int n,m;int bfs(Node t){ que.push(t); maze[t.x][t.y]='.'; Node kk=que.front(); maze[kk.x][kk.y]='.'; while(1){ Node q=que.front(); if(flag2){ aim.push(Node(q.x,q.y,1)); } que.pop(); for(int i=0;i<4;i++){ int xx=q.x+dirx[i];int yy=q.y+diry[i]; if(xx>=0&&xx<n&&yy>=0&&yy<m&&maze[xx][yy]=='#'){ que.push(Node(xx,yy,q.step+1)); maze[xx][yy]='.'; } } if(que.empty()){ for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(maze[i][j]=='#') return INF; return q.step-1; } }}int main(){ int T; scanf("%d",&T); getchar(); for(int ppp=1;ppp<=T;ppp++){ scanf("%d %d",&n,&m); getchar(); memset(a,0,sizeof(a)); for(int i=0;i<n;i++) gets(a[i]); for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) maze[i][j]=a[i][j]; int lim=0; bool flag=1; flag2=1; int ans=-1; while(!que.empty()) que.pop(); while(!aim.empty()) aim.pop(); for(int i=0;i<n&&flag;i++){ for(int j=0;j<m;j++){ if(maze[i][j]=='#'){ if(lim==2) {flag=0;break;} lim++; ans=max(bfs(Node(i,j,1)),ans); } } } cout<<"Case "<<ppp<<": "; if(flag){ flag2=0; while(!aim.empty()){ queue <Node> k=aim; while(!que.empty()) que.pop(); while(!k.empty()){ for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) maze[i][j]=a[i][j]; que.push(aim.front()); ans=min(bfs(k.front()),ans); k.pop(); } aim.pop(); } cout<<ans<<endl; }else cout<<-1<<endl; }}</span>
0 0
- FZU 2150 Fire Game 多起点BFS
- FZU 2150 Fire Game 多起点BFS
- FZU 2150 Fire Game(多起点bfs)
- FZU Problem 2150 Fire Game (双起点BFS啊 )
- I - Fire Game FZU 2150 双起点的BFS
- FZU 2150 Fire Game (双起点BFS)
- Fire Game (多起点BFS)
- fzu 2150 Fire Game(BFS)
- fzu 2150 Fire Game(BFS)
- FZU 2150 Fire Game(BFS)
- FZU--2150--Fire Game【BFS】
- FZU 2150Fire game-BFS
- FZU 2150 Fire Game(BFS)
- FZU 2150 Fire Game(bfs)
- FZU - 2150 Fire Game(BFS)
- FZU 2150 Fire Game(bfs)
- FZU-2150-Fire Game【BFS】
- FZU 2150 Fire Game (BFS)
- ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别
- vim折叠(非常好的功能)
- getChildFragment()
- arch安装指南(2016-10)
- iOS 开发 第三方分享 微信朋友圈分享
- FZU 2150 Fire Game 多起点BFS
- java 文件字符流 (复制一个不为空的目录)
- 韩信点兵问题
- Python调用C语言之如何调用动态链接库
- JAVA中关于Map的九大问题
- javaweb工作原理
- 极限定义
- 哈夫曼树--最优二叉树
- Android 多手机 屏幕演示,同步控制,群控系统