uva 11624
2024-08-31 06:55:14
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define N 1100
struct nodde {
int x,y;
}f[N],start;
int h,n,m,visitt[N][N];
int dis[4][2]={-1,0,1,0,0,1,0,-1};
char str[N][N];
struct node {
int x,y,time,f;
};
int judge(int x,int y) {
if(x>=1&&x<=n&&y>=1&&y<=m&&str[x][y]!='#'&&!visitt[x][y])
return 1;
return 0;
}
void bfs() {
int i;
queue<node>q;
node cur,next;
memset(visitt,0,sizeof(visitt));
for(i=0;i<h;i++) {
cur.x=f[i].x;
cur.y=f[i].y;
cur.time=0;
cur.f=1;
q.push(cur);
visitt[cur.x][cur.y]=1;
}
cur.x=start.x;
cur.y=start.y;
cur.time=0;
cur.f=0;
q.push(cur);
while(!q.empty()) {
cur=q.front();
if((cur.x==1||cur.x==n||cur.y==1||cur.y==m)&&cur.f==0) {//有可能起点就在边界上
printf("%d\n",cur.time+1);
return ;
}
q.pop();
for(i=0;i<4;i++) {
int xx=next.x=cur.x+dis[i][0];
int yy=next.y=cur.y+dis[i][1];
next.time=cur.time+1;
next.f=cur.f;
if(judge(xx,yy)) {
visitt[xx][yy]=1;
q.push(next);
}
}
}
printf("IMPOSSIBLE\n");
return ;
}
int main() {
int i,j,t;
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%s",str[i]+1);
h=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) {
if(str[i][j]=='J')
start.x=i,start.y=j;
if(str[i][j]=='F') {
f[h].x=i;
f[h++].y=j;
}
}
bfs();
}
return 0;
}
最新文章
- ASP.NET MVC中viewData、viewBag和templateData的使用与区别
- win server服务安装
- ecto注册码
- redhat 6.4 双网卡绑定
- stack around the variable “XX” was corrupted
- Android Broadcast管理
- javascript封装函数入门
- c++ std::advance
- 不容易系列之一(hdu1465)错排+递推
- LeetCode算法题-Add Binary(Java实现)
- 关于JDBC的总结
- scala-创建泛型数组(T: Manifest)
- python中的多进程与多线程(一)
- 关于js原型链
- django的优缺点(非原创)
- 初次见识结构体与map的区别
- (转)Python中的generator详解
- Ofstream的endl不好用怎么回事?
- asp.net MVC设计模式中使用iTextSharp实现html字符串生成PDF文件
- 【转】 Tomcat+redis+nginx配置
热门文章
- Android WiFi开发教程(二)——WiFi的搜索和连接
- ssdb底层实现——ssdb底层是leveldb,leveldb根本上是skiplist(例如为存储多个list items,必然有多个item key,而非暴力string cat),用它来做redis的list和set等,势必在数据结构和算法层面上有诸多不适
- Codeforces--630C--Lucky Numbers(快速幂)
- poj--1753--Flip Game(dfs好题)
- 【撸码caffe四】 solver.cpp&&sgd_solver.cpp
- B1045 糖果传递 数学
- VS2010中文注释带红色下划线的解决方法
- 2205 等差数列(dp)
- kafka与zookeeper实战笔记
- weui&;flexible布局