kuangbin专题一 简单搜索 J - Fire!

原创 2018年04月15日 16:00:08

J - Fire!

#include<iostream>  
#include<cstring>  
#include<queue>  
using namespace std;  
const int _max=1200;  
const int _m=999999;  
struct node{  
    int x,y;  
    int t;  
};  
int T,n,m,jx,jy,stepfire[_max][_max],scount;  
int dirx[]={1,-1,0,0},diry[]={0,0,1,-1};  
bool vis[_max][_max];  
char mp[_max][_max];  
bool check(node p){  
    if(p.x>n||p.x<1||p.y>m||p.y<1) return false;  
    if(!vis[p.x][p.y]) return false;  
    if(mp[p.x][p.y]=='#') return false;  
    return true;  
}  
queue<node>f;
void firebfs(){
	node now,next;
	while(!f.empty()){
		now=f.front();
		f.pop();
		for(int i=0;i<4;i++){
			next.x=now.x+dirx[i];
			next.y=now.y+diry[i];
			next.t=now.t+1;
			if(!check(next)) continue;
			vis[next.x][next.y]=0;
			stepfire[next.x][next.y]=min(next.t,stepfire[next.x][next.y]);
			f.push(next);
		}
	}
}
void bfs(int sx,int sy){  
    queue<node> q;  
    node now,next;  
    now.x=sx;  
    now.y=sy;  
    now.t=0;  
    vis[sx][sy]=0;  
    q.push(now);  
        while(!q.empty()){  
        now=q.front();  
        q.pop();  
        if(now.x==1||now.x==n||now.y==1||now.y==m){  
            scount=min(scount,now.t+1);  
        }   
        for(int i=0;i<4;i++){  
            next.x=now.x+dirx[i];  
            next.y=now.y+diry[i];  
            next.t=now.t+1;  
            if((!check(next))||(next.t>stepfire[next.x][next.y])||next.t==stepfire[next.x][next.y]) continue;  
            vis[next.x][next.y]=0;  
            q.push(next);  
    }  
}
} 
int main()  
{  
    cin>>T;  
    while(T--){  
        cin>>n>>m;  
        scount=_m;  
        memset(stepfire,_m,sizeof(stepfire));  
        for(int i=1;i<=n;i++)  
          for(int j=1;j<=m;j++){  
            cin>>mp[i][j];  
            if(mp[i][j]=='F'){  
                node fire;
				fire.x=i;
				fire.y=j;
				fire.t=0;
				stepfire[i][j]=1;
				f.push(fire); 
              }  
              if(mp[i][j]=='J'){  
                jx=i;jy=j;  
              }  
        }
		   memset(vis,1,sizeof(vis));  
           firebfs();  
           memset(vis,1,sizeof(vis));  
           bfs(jx,jy);  
		   if(scount==_m)   
          cout<<"IMPOSSIBLE"<<endl;  
          else  
          cout<<scount<<endl;    
        }    
               
}  

回过头来再次检查,感觉自己贼蠢,在判断是否出去的条件里把y==m写成了y==n,蠢得一批,已经两次了,上次有一道题也是这样的。。。。被自己蠢到了

kuangbin专题一 简单搜索 J - Fire!

J - Fire! #include&amp;lt;iostream&amp;gt; #include&amp;lt;cstring&amp;gt; #include&amp;lt;queue&amp...
  • Unclebighead
  • Unclebighead
  • 2018-04-15 16:00:08
  • 48

UVA 11624 Fire! ([kuangbin带你飞]专题一 简单搜索)

题目:题目 大意:在迷宫中,人J逃出去,,,出区域就算,迷宫中还有火,火会像四周蔓延,人不能走火易经到达的位置,求最短多长时间能出来 解体思路:用两次bfs,第一次记录火到每个地点的时间,第二次求...
  • HAHAAC
  • HAHAAC
  • 2016-10-17 08:34:08
  • 173

[kuangbin带你飞]专题一 简单搜索

简单搜索
  • hsj970319
  • hsj970319
  • 2017-01-22 20:23:14
  • 1021

[kuangbin带你飞]专题一 简单搜索 D

Description Farmer John knows that an intellectually satisfied cow is a happy cow who will give mor...
  • zjy2015302395
  • zjy2015302395
  • 2016-11-18 16:55:17
  • 219

Directx11教程二十三之Fire(摇动的火)

这节教程的思路可能曲折一点,我也不是全懂,先看看程序的结构: 一,什么是噪声纹理图? 大家知道C里有随机函数srand,可以生成随机变量,然而用srand这样的函数生成的随机变量是杂乱无章...
  • qq_29523119
  • qq_29523119
  • 2016-10-22 12:39:05
  • 362

菜鸟系列——简单搜索

菜鸟就要老老实实重新学起: 简单搜索: 一些简单搜索题,源自kuangbin大神的题目列表,留下以后出题用。 eg: POJ1321 棋盘问题 http://poj.org/problem?id=1...
  • kopyh
  • kopyh
  • 2015-09-22 01:34:01
  • 510

[kuangbin带你飞]专题一 简单搜索 A POJ1321

题目地址:https://vjudge.net/contest/65959#problem/A 思路:简单的dfs搜索,因为不能放在同一行,所以从第一行开始逐行往下,每行从第一个开始,判断当前位置是否...
  • l718531794
  • l718531794
  • 2016-09-16 21:50:45
  • 265

[kuangbin带你飞]专题一 简单搜索 K题迷宫

#include using namespace std; int map[5][5]; int dx[4]={1,-1,0,0}; int dy[4]={0,0,-1,1};//dx[]和dy[...
  • xunfengdumo
  • xunfengdumo
  • 2017-04-14 16:20:37
  • 222

kuangbin带你飞 专题一 简单搜索 (题解)

POJ 3279  题意:黑白的板,每次选择一个十字形翻转(十字板内黑白互换,若是边界则不管),求最小将原图变为全白的策略。 题解:枚举第一行翻转情况(二进制),2^c,然后验证,由于第一行确定...
  • Miracle_ma
  • Miracle_ma
  • 2015-06-30 12:28:10
  • 1301

[kuangbin带你飞]专题一 简单搜索C

Description Farmer John has been informed of the location of a fugitive cow and wants to catch her ...
  • zjy2015302395
  • zjy2015302395
  • 2016-11-18 16:36:01
  • 158
收藏助手
不良信息举报
您举报文章:kuangbin专题一 简单搜索 J - Fire!
举报原因:
原因补充:

(最多只允许输入30个字)