
DFS
打不死的小刘
做个笔记并分享思路
展开
-
PTA 7-4 两点间有路径吗? (20 分) dfs+并查集和并查集两种方式实现
题目描述:对于给定的无向图以及图中的两个顶点,计算两个顶点所在的连通分量中的顶点数,并且判断这两个顶点之间是否有路径。输入格式:第一行是不超过20的正整数N,表示图有N个顶点,顶点的编号即0~N-1;接下来N行,是N*N的邻接矩阵,矩阵的元素间用空格分隔;最后一行是用空格隔开的两个顶点编号v和w输出格式:第一行输出v所在的连通分量的顶点数第二行输出w所在的连通分量的顶点数第三行,若v和w之间有路径,则输出Yes,否则输出No注意:当v和w是同一个顶点时,认为v和w之间原创 2021-10-12 20:18:40 · 1229 阅读 · 0 评论 -
7-5 路径判断 (20 分) 判断图两个顶点之间是否有路径存在
7-5 路径判断 (20 分)给定一个有N个顶点和E条边的无向图,请判断给定的两个顶点之间是否有路径存在。 假设顶点从0到N−1编号。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。最后一行给出两个顶点编号i,j(0≤i,j<N),i和j之间用空格分隔。输出格式:如果i和j之间存在路径,则输出"There is a path between i and j.",否则输原创 2021-10-11 20:55:26 · 6357 阅读 · 2 评论 -
LeetCode 200.岛屿数量(DFS 简单易懂)
一、题目描述:给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:...原创 2021-09-05 20:21:44 · 181 阅读 · 0 评论 -
7-1 迷宫问题 (10 分)
一、题目描述小明置身于一个迷宫,请你帮小明找出从起点到终点的最短路程。 小明只能向上下左右四个方向移动。输入格式:第一行是两个整数n和m (1≤ m, n ≤100),表示迷宫的长和宽。接下来是n行,每行m个数字,表示整个迷宫。空地格子用0表示,障碍物用1表示,小明所在起点用3表示,终点用4表示。输出格式:如果能够到达终点,输出一个整数,表示小明从起点到目的地所需的最短时间。如果不能到达终点,输出“unreachable”。输入样例1:5 51 0 1 1 11 0 4 1原创 2021-09-04 18:46:24 · 2979 阅读 · 1 评论 -
LeetCode 199.二叉树的右视图(DFS和层序遍历 通俗易懂)
题目描述:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入:[1,2,3,null,5,null,4]输出:[1,3,4]一、DFS实现思路:从根部开始向右搜索,定义一个step表示层数,从0开始,再定义一个vector容器res储存每一层的最右边的元素,直到最底层的最右边元素添加到res中。代码:class Solution {public: vector<int> res;..原创 2021-09-03 22:26:24 · 395 阅读 · 0 评论