PID195 / 校园迷宫☆

从x,y走到去q,w的最小步数,限制是有的点可走,有的点不可走,BFS嘛。

#include<bits/stdc++.h>

using namespace std;

int n,m,a[][],b[][],q,w,e,r,ans;

int dx[]={,,,-},
dy[]={,-,,}; queue<pair<int,int> >Q;
bool vis[][];
void bfs(){
vis[q][w]=;
Q.push(make_pair(q,w));
while(!Q.empty()){
int x=Q.front().first,y=Q.front().second;Q.pop();
if(x==e&&y==r){
ans=b[x][y];
break;
}
for(int i=;i<;i++)
{
int tx=x+dx[i],ty=y+dy[i];
if(tx>=&&ty>=&&tx<=n&&ty<=m&&!vis[tx][ty]&&!a[tx][ty]){
b[tx][ty]=b[x][y]+;
vis[tx][ty]=;
Q.push(make_pair(tx,ty));
}
}
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
scanf("%d%d%d%d",&q,&w,&e,&r);
bfs();
if(!ans) printf("No Answer!\n");
else printf("%d\n",ans);
return ;
}

PID335 / 流星雨☆

Bessie听说有一场壮丽的流星雨即将来临,而且据说陨石将要落下来撞击地球并摧毁一切它遇到的东西。为了保证自己的安全,bessie决定到一个安全的(永远不会被陨石击毁)地方去。

报道表明将有M颗陨石落下(1 ≤ M ≤ 50,000),第i个陨石将在Ti(0 ≤ Ti ≤ 1,000)时刻砸中(Xi,Yi)点(0 ≤ Xi ≤ 300; 0 ≤ Yi ≤ 300) 。每颗陨石将击毁它直接砸中的点以及四个与其直接相邻的点

她现在所处的地方是坐标系的原点,并从零时刻起出发,前往一个安全的地点,要求是她经过某点时该点未被击毁。她只能在坐标系的第一象限以及x,y轴的正半轴上活动。

求她能到达一个安全地点的最短时间。

BFS嘛,跟上一题差不多

#include<bits/stdc++.h>

using namespace std;

int a[][],m;

int b[][],ans=-;

int dx[]={,,,-},
dy[]={,-,,}; queue<pair<int,int> >Q;
bool vis[][];
void bfs(){
vis[][]=;
Q.push(make_pair(,));
while(!Q.empty()){
int x=Q.front().first,y=Q.front().second;Q.pop();
// if(x==0&&y==0) goto end;
if(a[x][y]>){
ans=b[x][y];
break;
}
// end:
for(int i=;i<;i++)
{
int tx=x+dx[i],ty=y+dy[i];
if(tx>=&&ty>=&&tx<=&&ty<=&&!vis[tx][ty]&&a[tx][ty]>b[x][y]+){
b[tx][ty]=b[x][y]+;
vis[tx][ty]=;
Q.push(make_pair(tx,ty));
}
}
}
} int main()
{
scanf("%d",&m);
memset(a,0x3f,sizeof(a));
for(int t,x,y,i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&t);
a[x][y]=min(t,a[x][y]);
for(int k=;k<;k++){
if(x+dx[k]>=&&y+dy[k]>=)
a[x+dx[k]][y+dy[k]]=min(a[x+dx[k]][y+dy[k]],t);
}
}
bfs();
printf("%d\n",ans);
return ;
}

2999: 卫星照片 USACO 2005 NOV

求出最大的联通块大小

#include<bits/stdc++.h>

using namespace std;

int n,m;
char a[][];
int ans; int dx[]={,,,-},
dy[]={,-,,}; bool vis[][]; queue<pair<int,int> >Q; int bfs(int x,int y){
int an=;
Q.push(make_pair(x,y));
vis[x][y]=;
while(!Q.empty()){
int x=Q.front().first,y=Q.front().second;Q.pop();++an;
for(int i=;i<;i++){
int tx=x+dx[i],ty=y+dy[i];
if(!vis[tx][ty]&&a[tx][ty]=='*'&&tx>=&&ty>=&&tx<=n&&ty<=m){
vis[tx][ty]=;
Q.push(make_pair(tx,ty));
}
}
}
return an;
} int main()
{
scanf("%d%d",&m,&n);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(!vis[i][j]&&a[i][j]=='*'){
ans=max(bfs(i,j),ans);
}
}
}
printf("%d\n",ans);
return ;
}

BFS入门篇——RQNOJ195&&335的更多相关文章

  1. Hadoop生态圈-Hive快速入门篇之HQL的基础语法

    Hadoop生态圈-Hive快速入门篇之HQL的基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的重点是介绍Hive中常见的数据类型,DDL数据定义,DML数据操作 ...

  2. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  3. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  4. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  5. 一个App完成入门篇(七)- 完成发现页面

    第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...

  6. [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界

    本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...

  7. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

  8. 转:OSGi 入门篇:生命周期层

    OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或 ...

  9. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

随机推荐

  1. php 把一个数组分成有n个元素的二维数组的算法

    一.第一种解法 <?php //把一个数组分成几个数组 //$arr 是数组 //$num 是数组的个数 function partition($arr,$num){ //数组的个数 $list ...

  2. [开发工具]_[Sublime Text 2]_[配置C++编译执行环境]

    场景: 1. g++的版本号更新比較快,能够使用最新的C++11特性, 这里sublime text 2是我的轻量级C++开发工具(仅仅有这个),能够使用st2这样的工具来验证一些语法新特性, 也能够 ...

  3. How to use eclipse quickly

    --> // TODO Quickly find outstanding event 快速查找未完成事件        eg: // TODO Robin   --> Templates  ...

  4. java异步编程

    异步编程提供了一个非阻塞事件驱动的模型.通过异步消除阻塞,可以让web服务响应更多请求.可以让系统更高效的执行.比如log框架,记录日志或异常时异步执行可避免影响正常业务流程的执行. 异步变成如何把线 ...

  5. bzoj3661

    网络流/贪心 网络流做法是对于每一列,如果一个兔子下一天继续可以存在,那么连一条容量为1的边,然后设立一个中转站,来控制可以换的数量,容量限制l.时限100s,能跑过去我的太慢了,一个点100s 正解 ...

  6. 03、HelleBaiduMap

    D:\百度地图\百度地图\资料\百度地图与定位SDK\百度地图v3.5.0\BaiduMap_AndroidSDK_v3.5.0_All\BaiduMap_AndroidSDK_v3.5.0_Docs ...

  7. oracle基础学习---------1

    1.SQL执行时间的开关 set timing on --->开         set timing off--->关 2.创建数据表.以已存在的表创建(也就是复制一个表.但表内没有数据 ...

  8. 通过类库ChineseChar实现将汉字转化为拼音

    //封装dllusing Microsoft.International.Converters.PinYinConverter;using System.Text;namespace Utils{ p ...

  9. 百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度

    前言: 前端时间刚好使用了百度地图的js api定位获取用户当前经纬度并获取当前详细位置和通过当前用户详细地理位置换取用户当前经纬度坐标的功能,为了方便下次找起来方便一些自己在这里记录一下,希望也能够 ...

  10. 汇编程序44:检测点13.1 (jmp near ptr 标号指令的中断例程)

    安装程序: assume cs:code //jmp near ptr 标号指令的替代实现,使用iret指令 code segment start: mov ax,cs mov ds,ax mov s ...