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. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

  2. Oracle Study之--Oracle 11gR2通过RMAN克隆数据库

    Oracle Study之--Oracle 11gR2通过RMAN克隆数据库 Purpose of Database Duplication A duplicate database is usefu ...

  3. 5分钟APIG实战: 使用Rust语言快速构建API能力开放

    序言:Rust语言简介 参与过C/C++大型项目的同学可能都经历过因为Null Pointer.Memory Leak等问题“被” 加班了不知道多少个晚上.别沮丧,你不是一个人,Mozilla Fir ...

  4. error: &#39;for&#39; loop initial declarations are only allowed in C99 mode

    error: 'for' loop initial declarations are only allowed in C99 mode 使用gcc编译代码是报出 error: 'for' loop i ...

  5. git-svn for mac

    熟练使用 git ,新公司用的是 svn,这就尴尬了,为了这个习惯问题,我还是毅然坚持使用 git,但是又不与公司的 svn 冲突,所以就找到了 git 的 git-svn 插件. 在 mac 上使用 ...

  6. 跨平台C、C++代码注意的事项

    在我们的开发中,跨平台的需求越来越强烈,怎样保持C/C++代码能在多个平台上编译,是一个比較值得研究的问题.关于跨平台的文章网上非常多,跨平台的库网上也非常多.那么我从自己的跨平台开发经验谈一谈自己的 ...

  7. ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

    前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path.之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开 ...

  8. 【关键字】volatile

    volatile 修饰的关键字,确保编译器不对成员变量进行任何优化: private volatile double d; // No optimization

  9. opensStack

  10. Input 内提示填写内容

    输入框内提示默认内容,用户的点击后提示内容消失,如果填写内容为空,失去焦点后自动显示提示内容 <input type="text" value="搜索" ...