题解:ABC276E - Round Trip

题解:ABC276E - Round Trip

·题目

链接:Atcoder。

链接:洛谷。

·难度

算法难度:普及。

思维难度:提高。

调码难度:提高。

综合评价:困难。

·算法

bfs。

·思路

从起点周围四个点中任选两个可以走的(记为点1、点2),判断他们两个在不经过起点的情况下是否连通(当然是用bfs判断),由于该两个点之间路径长度至少为2(见图1),所以该回路总长度一定不少于4(起点—{1}—点1—{不少于2}—点2—{1}—起点)。因此,只要有任意两个点可以并经过起点并且互相联通,就应该输出Yes,否则输出No。

 

·代价

O(N+M)。

·细节

由于数据大小不确定,对于存储问题可以用vector、string、map等实现。

·代码

#include<bits/stdc++.h>
#define N 1100000
using namespace std;
struct Node{int d,x,y;
};
map<pair<int,int>,bool>see;
string mp[N]={};
Node q[N]={};
int c[4][2]={{-1,0},{0,-1},{0,1},{1,0}},h=0,w=0,x=0,y=0;
char in[N]={};
bool can_get(int ax,int ay,int bx,int by);
int main(){scanf("%d%d",&h,&w);for(int i=1;i<=h;i++){scanf("%s",in);mp[i]=in;}for(int i=1;i<=h;i++){mp[i]=' '+mp[i];for(int j=1;j<=w;j++){if(mp[i][j]=='S'){x=i;y=j;}}}for(int i=0;i<4;i++){for(int j=i+1;j<4;j++){int ax=x+c[i][0],ay=y+c[i][1],bx=x+c[j][0],by=y+c[j][1];if(mp[ax][ay]!='#'&&mp[bx][by]!='#'){if(can_get(ax,ay,bx,by)==true){printf("Yes\n");return 0;}}}}printf("No\n");return 0;
}
bool can_get(int ax,int ay,int bx,int by){see.clear();int front=1,rear=0;rear++;q[rear]={0,ax,ay};see[{ax,ay}]=true;while(front<=rear){Node now=q[front];if(now.x==bx&&now.y==by){return true;}for(int i=0;i<4;i++){int nx=now.x+c[i][0],ny=now.y+c[i][1];if(see[{nx,ny}]==true||nx<1||ny<1||nx>h||ny>w||nx==x&&ny==y||mp[nx][ny]=='#'){continue;}else{see[{nx,ny}]=true;rear++;q[rear]={now.d+1,nx,ny};}}front++;}return false;
}

·注意

bfs内移动时要考虑边界、障碍物、是否在起点等问题;输出Yes后一定要及时退出程序;string存储时一定要注意是从0还是1开始。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382593.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

北京冬奥会 向世界展示了什么

01 北京冬奥会让全球的目光&#xff0c;再次聚焦到中国。大家深刻感知到了一个巨大的变化&#xff1a;从过去中国需要融入世界&#xff0c;需要走向全球化&#xff0c;到今天世界需要中国&#xff0c;中国做好了准备。从2008年北京奥运会&#xff0c;到2022年北京冬奥会&#…

我们该不该旗帜鲜明地反对李彦宏当选院士?

这几天&#xff0c; 中国工程院对外公布2019年 院士增选候选人&#xff0c;百度董事长兼 首席执行官 李彦宏位列其中。尽管&#xff0c;最终有望从531名候选人中脱颖而出的&#xff0c;可算凤毛麟角。但是&#xff0c;针对李彦宏的候选&#xff0c;还是有网友喊出了“旗帜鲜明地…

程序员为什么应该旗帜鲜明地反对“最佳实践”?

让第一个版本的系统混乱一点&#xff0c;或许是件好事。 作者 | 黄峰达&#xff0c;CSDN 博客专家 Phodal 责编 | 唐小引 头图 | 作者绘制并授权 CSDN 使用 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 最近&#xff0c;我在设计、开发、维护一个基于『文档代码…

旗帜鲜明地反对“码而优则仕”

点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复“大礼包”有惊喜礼包&#xff01; 每日英文 Real strong men are not those without tears,but those running in tears. 真正的强者&#xff0c;不是没有眼泪的人&#xff0c;而是含着眼泪奔跑的人。 每日…

微软GitHub旗帜鲜明抵制996!

作者 | 伍杏玲 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 自3月27日996.ICU话题诞生以来&#xff0c;已引发国内外持续不断地关注和热议。国内大佬忙着发声&#xff0c;主流浏览器忙着屏蔽项目的GitHub地址。 而马云几天前谈的“996成功论”&#xff0c;被图…

我的世界java什么村民卖地图_教程/村民交易大厅

此条目的(部分)内容需要翻译。 你可以帮助我们来翻译此条目,但请勿使用机器翻译。 这篇教程将教你如何建造一个村民交易大厅。 主条目:交易 村民交易大厅要求最大限度地增加易于达到的村民数量,也要求提供一个快速遗弃并替换不需要的村民的途径。 村民交易大厅中有三个部分:…

旗帜鲜明的反对基因编辑婴儿!

阅读本文大概需要 3.3 分钟。 昨天的新闻&#xff0c;相信大家都知道了&#xff0c;媒体报道称世界首例免疫艾滋病的基因编辑婴儿在中国诞生&#xff0c;这事引起大家激烈的讨论&#xff0c;后台很多人问我对这件事是什么看法&#xff0c;我不是生物医学领域内的科学家&#xf…

攻防世界web刷题

web新手区 view_sourcerobotsbackupcookiedisabled_buttonweak authsimple_phpget_postxff_refererwebshellcommand_execution view_source 打开源代码发现答案就在这里 robots 查看robots.txt文件 发现flag文件并打开 backup 网站存在备份文件&#xff0c;常见的备份文件…

程序员与你共观世界杯:Javascript 简易绘制世界杯旗帜(含足球元素)

引言&#xff1a;2022年是世界杯赛事年&#xff0c;世界杯是一项非常受全世界欢迎的大赛事&#xff0c;一到世界杯赛事期间&#xff0c;各大平台热搜就一直是世界杯相关的话题&#xff0c;在这期间&#xff0c;即使你不了解足球&#xff0c;也能耳濡目染&#xff0c;因为身边到…

初学RenderMonkey做一面旗帜飘动的效果

这几天在捣鼓一个游戏 骑马与砍杀 不知道有没有人玩过。官方出了个shader包&#xff0c;可以自定义shader,于是就开始学起来了&#xff0c;学了一点&#xff0c;简单的实现了一直想弄的动态世界。这期间一直在用RenderMonkey开发&#xff08;貌似停止更新了&#xff0c;会不会有…

攻防世界ctf题目easyupload做题笔记。

刚刷完upload-labs靶场&#xff0c;做做ctf题目&#xff0c;发现自己掌握的知识并不牢固。做了半天没有解出来&#xff0c;最后还是看别人的题解做出来的。写下做题过程&#xff0c;也就是wp吧。为了方便以后复习巩固。 本题的主要考点为利用fastcgi的.user.ini特性进行任意命…

我的世界java太卡了怎么办_我的世界服务器太卡怎么办 MC服务器优化攻略

我的世界很多玩家都有自己的服务器,但是很多玩家并不知道怎么优化和维护服务器,从而导致服务器很卡,今天小编为大家带来的是我的世界服务器优化攻略,还不知道怎么优化服务器的小伙伴不要错过哦。 系统的选择 (网页后台可以跳过本段)关于系统的选择,Linux类系统(Centos、Re…

我的世界1.14刷雪机java版_我的世界全自动刷雪机图文攻略 手把手教你刷雪机怎么做...

&#xff1a;原标题&#xff1a; 我的世界刷雪机怎么做?我的世界全自动刷雪机做法是什么?想必对于各位初入我的世界的小伙伴来说有些困难&#xff0c;接下来我们一起来看看我的世界全自动刷雪机做法吧。 【需要的材料提前准备】 橡木楼梯、南瓜、雪块、橙色羊毛、红石中继器、…

我的世界显示java过老_你在《我的世界》中做过哪些蠢事?玩家:误把“java”看成了jave...

本期内容 玩到现在&#xff0c;我们在Minecraft中获得了很多的乐趣&#xff0c;并将其作为一种信仰来对待&#xff0c;只要有人对这款游戏做了人神共愤的事&#xff0c;便会群起而攻之。不过在一开始的探索过程中&#xff0c;我们或多或少做过一些“蠢事”&#xff0c;其中有些…

我的世界java版本试玩_我的世界Minecraft Java版17w49a发布

我的世界Minecraft Java版17w49a发。每周快照是Minecraft的测试机制&#xff0c;主要用于下一个正式版的特性预览。然而&#xff0c;每周快照主要用于新特性展示&#xff0c;通常存在大量漏洞。因此对于普通玩家建议仅做测试尝鲜用。使用测试版打开存档前请务必备份。适用于正式…

我的世界java刷雪机_我的世界全自动刷雪机图文攻略

我的世界刷雪机怎么做?我的世界全自动刷雪机做法是什么?想必对于各位初入我的世界的小伙伴来说有些困难&#xff0c;接下来我们一起来看看我的世界全自动刷雪机做法吧。 【需要的材料提前准备】 橡木楼梯、南瓜、雪块、橙色羊毛、红石中继器、拉杆、活塞、箱子、橡木木板、漏…

JAVA爬酷狗音乐

先说一下爬取的思路 1&#xff0c;随便打开一首能波的歌播放&#xff0c;找到它的播放地址&#xff1a; https://wwwapi.kugou.com/yy/index.php?rplay/getdata&hash42447823290E80FD5318E8A195A169DD&album_id28687022 多播放几首发现只要hash和album_id不同就能播放…

python爬虫:爬取酷狗音乐榜单中的音乐信息并存储到MySQL(附源码)

目录 具体思路代码部分获取歌曲名称和歌手获取歌曲播放页的url获取音乐下载地址将获取到的音乐信息添加到MySQL中 完整代码 获取酷狗音乐榜单中的音乐信息&#xff0c;这里我以“网络红歌榜”为例 获取榜单中的 “音乐名称”&#xff0c;“歌手”&#xff0c;“音乐下载地址”&…

KeePass CVE-2023-32784:进程内存转储检测

KeePass CVE-2023-32784&#xff1a;进程内存转储检测 KeePass 是一种流行的开源密码管理器&#xff0c;可以在 Windows、Mac 或 Linux 上运行。该漏洞允许从正在运行的进程的内存中以明文形式提取主密钥。主密钥将允许攻击者访问所有存储的凭据 强烈建议更新到KeePass 2.54以…

Python爬虫之爬取酷狗音乐歌曲

Python爬虫之爬取酷狗音乐歌曲 1.安装第三方库 在Python的语言库中, 分为Python标准库和Python的第三方库. Python标准库是在你安装Python的时候已经包含在了安装目录下, 而Python第三方库需要使用Python的包管理pip来安装. 在本次代码中, 我们需要用到request库. requests翻…