地下迷宫探索(后两个测试点无法通过?这里有你想要的答案)
发布日期:2021-05-06 03:53:53 浏览次数:3 分类:技术文章

本文共 664 字,大约阅读时间需要 2 分钟。

地下迷宫探索

题目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

答案

#include
#include
#include
#include
using namespace std;vector
vec[1001],t;int vis[1001],cnt=0;void dfs(int tmp){ if(vis[tmp]==0) { vis[tmp]=1; t.push_back(tmp); cnt++; } for(int i=0;i
>n>>m>>start; while(m--) { int x,y; cin>>x>>y; vec[x].push_back(y); vec[y].push_back(x); } for(int i=1;i<=n;i++) sort(vec[i].begin(),vec[i].end()); dfs(start); int flag=0; for(int i=0;i

总结

本题使用深度遍历,同时使用了vector向量组存储相关信息

如果你是在深度遍历后将输出的结果反向输出,那就无法通过后两个节点。

在我们仔细审题后,发现这道题的本意是回溯,那么我们正好可以在递归中实现回溯,即在每个dfs后,将目标值压入向量t中

代码如下:

dfs(vec[tmp][i]);t.push_back(tmp);
上一篇:六度空间(使用vector,queue以及bfs)
下一篇:PTA——哥尼斯堡的“七桥问题(出现运行超时?不妨进来看看)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年03月25日 14时17分31秒