模拟BFS搜索

对于一个将要爆炸的点,可能同时由多个点引起。

 /*
模拟搜索过程
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn = ;
int mat[ maxn ][ maxn ];
int mytime[ maxn ][ maxn ];
const int dx[] = {,,-,};
const int dy[] = {,-,,};
struct node{
int x,y,ti,flag;
};
void solve( int x,int y ){
queue<node>q;
node cur,nxt;
cur.x = x;
cur.y = y;
cur.ti = ;
cur.flag = -;
mytime[x][y] = ;
mat[cur.x][cur.y]++;
q.push( cur ); while( !q.empty() ){
cur=q.front();
q.pop();
if( cur.flag==- )
mat[cur.x][cur.y] = ;
for( int i=;i<;i++ ){
nxt.x = cur.x+dx[i];
nxt.y = cur.y+dy[i];
nxt.ti = cur.ti+;
if( cur.flag!=-&&cur.flag!=i ) continue;
if( nxt.x<||nxt.x>||nxt.y<||nxt.y> ) continue;
if( mat[nxt.x][nxt.y]== ){
nxt.flag = i;
q.push( nxt );
}
else if( mat[nxt.x][nxt.y]>=&&mat[nxt.x][nxt.y]<= ){
mat[nxt.x][nxt.y]++;
}
else if( mat[nxt.x][nxt.y]== ){
nxt.flag = -;
q.push( nxt );
mat[ nxt.x ][ nxt.y ]++;
mytime[nxt.x][nxt.y] = nxt.ti;
}
else if( mat[nxt.x][nxt.y]> ){
if( nxt.ti<=mytime[nxt.x][nxt.y] ){
mat[nxt.x][nxt.y]++;
}
else {
nxt.flag = i;
q.push( nxt );
}
}
}
}
return ;
} int main(){
while( scanf("%d",&mat[ ][ ])== ){
for( int i=;i<=;i++ )
scanf("%d",&mat[ ][ i ]);
for( int i=;i<=;i++ )
for( int j=;j<=;j++ )
scanf("%d",&mat[ i ][ j ]);
int m;
int x,y;
scanf("%d",&m);
while( m-- ){
scanf("%d%d",&x,&y);
if( mat[ x ][ y ]<= ){
mat[ x ][ y ] ++;
continue;
}
memset( mytime,-,sizeof( mytime ) );
solve( x,y );
}
for( int i=;i<=;i++ ){
for( int j=;j<=;j++ ){
if( j== ) printf("%d",mat[ i ][ j ]);
else printf(" %d",mat[ i ][ j ]);
}
printf("\n");
}
printf("\n");
}
return ;
}

HDU4527+BFS的更多相关文章

  1. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  2. 【BZOJ-1656】The Grove 树木 BFS + 射线法

    1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 186  Solved: 118[Su ...

  3. POJ 3278 Catch That Cow(bfs)

    传送门 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 80273   Accepted: 25 ...

  4. POJ 2251 Dungeon Master(3D迷宫 bfs)

    传送门 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28416   Accepted: 11 ...

  5. Sicily 1215: 脱离地牢(BFS)

    这道题按照题意直接BFS即可,主要要注意题意中的相遇是指两种情况:一种是同时到达同一格子,另一种是在移动时相遇,如Paris在(1,2),而Helen在(1,2),若下一步Paris到达(1,1),而 ...

  6. Sicily 1048: Inverso(BFS)

    题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作.可用BFS搜索解答,用vector储存每次的操作 #include<bits/stdc++. ...

  7. Sicily 1444: Prime Path(BFS)

    题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...

  8. Sicily 1051: 魔板(BFS+排重)

    相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...

  9. Sicily 1150: 简单魔板(BFS)

    此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...

随机推荐

  1. C#学习笔记7:多态是面向对象的三大特征(封装、继承、多态)之一

    多态: 多态是面向对象的三大特征(封装.继承.多态)之一. 什么是多态? 一个对象表现出多种状态. 多态的实现方法: 1.虚方法: 2.抽象方法: 3.接口. PS:New 关键词可以隐藏父类的方法. ...

  2. sql server中分布式查询随笔

    由于业务逻辑的多样性 经常得在sql server中查询不同数据库中数据 这就产生了分布式查询的需求 现我将开发中遇到的几种查询总结如下: 1.access版本 --建立连接服务器 exec sp_a ...

  3. 复制pdf文字出来是乱码的一种可能的解决方案

    最近在处理一个pdf文件,是一个地图文件,上面带各种文字的标注,地图比较大,而且文字信息比较多而且分散.因为字体的问题,在我的windows电脑上虽然可以正常显示,但是复制出来的文字都是方块,而且对应 ...

  4. UITableViewCell左滑的时候添加多个按钮的方法(iOS8+)以及UIRefreshControl(iOS6+)的使用。

    之前想在cell左滑的时候添加更多的按钮而不是只有‘删除’按钮如下所示,貌似不是一件简单的事.但是现在只要实现几个方法就行了. 代码写的比较垃圾,重在理解这个知识.. . 具体代码: // //  T ...

  5. iOS开发——手机号,密码,邮箱,身份证号,中文判断

    目前这些方面的判断主要是用了正则表达式 手机号的判断,目前主要是长度.均是数字,支持的号段由于第三方通讯比如京东通讯,小米通讯等支持的号段挺多, 有171,170,135,147等等,所以号段限制简单 ...

  6. 隐藏NavigationBar 带来的坑

    一.场景介绍 现在大多数APP 都有一个需求,就是隐藏某一个页面的NavigationBar.很多开发者直接   [self.navigationController setNavigationBar ...

  7. asp:get请求写法

    写在前面的话 XMLHttpRequest对象的open方法的第一个参数为request-type,取值可以为get或post.本篇介绍get请求. get请求的目的,主要是为了获取数据.虽然get请 ...

  8. 转:jQuery对象与dom对象的转换

    jQuery对象与dom对象的转换 发布时间:September 20, 2007 分类:JavaScript <新站上线的手记> <Discuz!多附件上传选择框之jQuery版& ...

  9. ES6的promise的学习

    1.Promise的含义: Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Pro ...

  10. mac安装软件运行提示「xxx.app已损坏,打不开.你应该将它移到废纸篓」的解决办法

    「xxx.app已损坏,打不开.你应该将它移到废纸篓」,其实并非你安装的软件已损坏,而是Mac系统的安全设置问题,往往这些软件可能是经过了汉化或者破解,所以被Mac认为「已损坏」,那么解决方法就是临时 ...