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,抛弃那些复杂的 ...
随机推荐
- The Pragmatic Programmer 读书笔记之中的一个 DRY-Don’t Repeat Youself
The Pragmatic Programmer读书笔记之中的一个 DRY-Don't Repeat Youself 尽管自己买了非常多软件project方面的书,可是由于时间的问题.一直没有静 ...
- LeetCode 788. Rotated Digits (旋转数字)
X is a good number if after rotating each digit individually by 180 degrees, we get a valid number t ...
- Ubuntu 13.10 安装 TeX Live 2013
注:笔者也是刚刚接触TeX系统,水平有限,若有疏漏之处还望指正. 中文解决方案 对于LaTeX中文排版,比较方便有这样的几种解决方案:LaTeX+CJK / LaTeX+XeTeX / CTeX.其中 ...
- 360p以上
请选择200MB以内,360p以上,时长3秒到300秒的文件.(支持格式:mp4.3gp.avi.mov.m4v.mkv文件)
- 深入理解7816(1)---- 关于F/D和etu【转】
本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0101gkss.html 深入理解7816(1)---- 关于F/D和etu 对于刚接触智能卡的工程师来说, ...
- Linux VPS上安装KDE, Gnome和VNC
- PCB 挺有意思的基数排序----C#代码实现
今天在头条看一个很有意思的排序算法[基数排序],以前所学习的排序算法都是基于数值对比的方式排序的,而这个算法挺有意思的非常独特.但从网上看到的例子通常是对个位,十位处理,并转为对应的桶索引的方式实现, ...
- E20171016-mk
chaos n. 混乱,紊乱; (天地未出现的) 浑沌世界; 〈古〉无底深渊; 一团糟;
- 湖南集训day5
难度:☆☆☆☆☆☆☆ /* 二分答案 算斜率算截距巴拉巴拉很好推的公式 貌似没这么麻烦我太弱了...... 唉不重要... */ #include<iostream> #include&l ...
- [App Store Connect帮助]三、管理 App 和版本(6.1)转让 App:App 转让概述
当您将某个 App 出售给其他开发者,或想要将其移至其他 App Store Connect 帐户或组织时,您需要转让该 App. 您无需将 App 从 App Store 下架,即可将其所有权转让给 ...