BFS入门篇——RQNOJ195&&335
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的更多相关文章
- Hadoop生态圈-Hive快速入门篇之HQL的基础语法
Hadoop生态圈-Hive快速入门篇之HQL的基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的重点是介绍Hive中常见的数据类型,DDL数据定义,DML数据操作 ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- 一个App完成入门篇(七)- 完成发现页面
第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...
- [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界
本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...
- 转:OSGi 入门篇:模块层
OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...
- 转:OSGi 入门篇:生命周期层
OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或 ...
- 【three.js详解之一】入门篇
[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...
随机推荐
- 在Centos6.5下Samba的简单配置
本文的目的主要用来说明怎样在CentOS6.5的环境下配置出一个简单可用的samba服务,而且能够通过windows对其文件进行訪问 安装相关软件 # yum install samba samba- ...
- error: 'for' 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 ...
- bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2069 首先,对于和 1 相连的点,一定是从某个点出发,回到另一个点: 所以需要枚举起点和终点 ...
- tyvj2054 四叶草魔杖——连通块 & 状压DP
题目:http://www.joyoi.cn/problem/tyvj-2054 把点分成几个连通块,和为0的几个点放在一块,在块内跑最小生成树作为这个块的代价: 然后状压DP,组成全集的最小代价就是 ...
- 58. Extjs grid CheckboxSelectionModel 单选
转自:https://kabuka.iteye.com/blog/581823 默认的 new Ext.grid.CheckboxSelectionModel 都是可以多选的,但是有时候需要控制单选时 ...
- 本地mongochef连接其他计算机上的数据库认证失败解决方法
关闭防火墙或者在信任程序列表添加运行目录下的mongod.exe即可
- kubernetes installing and using 单机版
centos安装docker uname -r yum remove docker \ docker-client \ docker-client-latest \ docker-common \ d ...
- Java Controller下兼容xls和xlsx且可识别合并单元格的excel导入功能
1.工具类,读取单元格数据的时候,如果当前单元格是合并单元格,会自动读取合并单元格的值 package com.shjh.core.util; import java.io.IOException; ...
- JS高级——eval
eval函数可以用来将字符串转换成JavaScript代码并且运行 <script> eval('var a=10'); console.log(a);//10 </script&g ...
- [Windows Server 2012] Filezilla安装方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:FileZ ...