FZU2150
来源:互联网 发布:淘宝营销词 编辑:程序博客网 时间:2024/06/05 03:48
题目名称:Fire Game
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150
题意:给出一个m*n的图,‘#’表示草坪,‘ . ’表示空地,然后可以选择在任意的两个草坪格子点火,火每秒会向周围四个格子扩散,问选择那两个点使得燃烧所有的草坪花费时间最小?
思路:因为题目数据不大,所以可以从中随便找两个点bfs
代码如下:
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<vector>#include<queue>using namespace std;const int INF=0x3f3f3f3f;char a[15][15];int vis[15][15];int dir[4][2]={0,1,0,-1,1,0,-1,0};struct Node{ int x,y; int cnt; Node(int x,int y,int cnt) { this->x=x; this->y=y; this->cnt=cnt; } Node(){}};vector<struct Node> v;queue<Node> q;int t,n,m;int bfs(Node k,Node b){ memset(vis,0,sizeof(vis)); vis[k.x][k.y]=vis[b.x][b.y]=1; k.cnt=0;b.cnt=0; while(!q.empty()) q.pop(); q.push(k);q.push(b); int sum=INF; while(!q.empty()) { Node now=q.front(); q.pop(); sum=now.cnt; for(int i=0;i<4;i++) { Node tmp; tmp.x=now.x+dir[i][0]; tmp.y=now.y+dir[i][1]; tmp.cnt=now.cnt+1; if(tmp.x>=0&&tmp.y>=0&&tmp.x<n&&tmp.y<m&&!vis[tmp.x][tmp.y]&&a[tmp.x][tmp.y]=='#') { vis[tmp.x][tmp.y]=1; q.push(tmp); } } } return sum;}int main(){ while(scanf("%d",&t)!=EOF) { for(int ss=1;ss<=t;ss++) { scanf("%d%d%*c",&n,&m); v.clear(); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%c",&a[i][j]); if(a[i][j]=='#') v.push_back(Node(i,j,0)); } getchar(); } int ans=INF; for(int i=0;i<v.size();i++) { for(int j=i;j<v.size();j++) { int tmp=bfs(v[i],v[j]); bool ok=true; for(int k=0;k<n;k++) { for(int f=0;f<m;f++) { if(vis[k][f]==0&&a[k][f]=='#') { ok=false; break; } } if(ok==false) break; } if(ok) { ans = min(ans,tmp); } } } printf("Case %d: ",ss); if(ans==INF) printf("-1\n"); else printf("%d\n",ans); } } return 0;}
0 0
- FZU2150
- fzu2150 搜索
- FZU2150->BFS
- FZU2150 fire
- FZU2150 Fire Game (bfs)
- FZU2150,暴力广搜
- FZU2150 Fire Game
- FZU2150 Fire Game
- fzu2150(广搜)
- FZU2150 Fire Game
- fzu2150 Fire Game bfs
- FZU2150 fire 双搜bfs
- FZU2150 Fire Game (BFS)
- FZU2150-Fire Game
- FZU2150 Fire Game
- FZU2150双源BFS,暴力搜索
- FZU2150 Fire Game(BFS)
- FZU2150(Fire Game)(枚举+BFS)
- PDU短信发送之二
- HDU 1317--XYZZY 【spfa判断正环求最长路径 && floyd求传递闭包】
- 国内GIS论坛
- 观察者模式的解读与思考
- web的用处
- FZU2150
- HDU 1258 Sum It Up
- [C++学习笔记]--函数指针
- UVA1586 Molar mass
- iOS7 UI改变总结
- 程序运行对象加载流程
- 谁能帮帮我弄这个php。。。。。
- 移动设备部分不支持background—size解决办法
- 煎饼侠迅雷高清完整下载