算法训练——图(生成树、并查集、环、路径)

news/2024/7/20 23:14:23 标签: 算法, 深度优先

文章目录


广泛用到BFS和DFS,我经常混淆的地方是:究竟是在哪里判断是否被访问过if(vised[node])?
建议:如果是BFS:在出队后进行判断。我有时候的顾虑是想着不要重复入队,所以在入队前进行判断vised即在for循环里面判断,如果已经被访问,就不入队,如果没被访问,就入队。
如果是DFS:在for循环外面进行判断,比如模板:

void DFS(node){
	if(vised[node]){//在for循环外面判断
		return;
	}
	vised[node]=true;
	for(auto node2:graph[node]){
		//if(vised[node2]) {continue;} //建议不要在这里判断
		DFS(node2);
	}
}

下述代码是210题课程表II的解题,我一开始把dfs中的vised判断写到了for循环里,但是onpath的判断又写到了for循环外面,导致我existCycle值恒为false,从而导致答案错误。后来把onpath的判断移动到for循环内,就解决这个问题了。
在这里插入图片描述下面是labuladong对这道题的写法:
在这里插入图片描述


http://www.niftyadmin.cn/n/1020765.html

相关文章

浅谈jmeter请求参数获取的方式

一、传统的web端请求参数我们在浏览器url栏看到传递的参数是什么,比如百度: 1、我们假如百度有一个这样的地址: https://www.baidu.com/s?wdjmeter&nameloadrunner 2、我们添加一个线程组、http请求和察看结果树,如下&#x…

2020.10我的自考总结

一年两度的自考又一次结束了,这次我报了三科,分别是,数据库、网络经济企业与企业管理,软件开发工具,因为时间的原因,没有时间对数据库进行准备,放弃了这一科。其余的两课还准备的不错&#xff0…

SQL数据库的一些基本操作

最近在学习数据库的一些知识,做了导图,贴在博客里面 首先是表的创建、更改、删除语句 其次是表的信息输入 最后是表的信息查询 这些都是SQL中的一些基本的操作,逐渐熟悉会给接下来的学习带来巨大的帮助。

sql书籍学习第一章,再认识

第一章 1:什么是数据库? 2;什么是关系性数据库()RDBMS? 3: 解释它的意思 4:数据库表名的限制 5; CREATE DATABASE myFirstDatabase; DROP DATABASE myFirstDatabase;\ 解释他的意思 6常用数据类型…

[BZOJ2554]Color 期望神题

传送门 Description 有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作多少次,才能使得所有球的颜色都一样? Input 一行一…

SQL第二章第三章

1:插入数据 或者 2:显示数据 SELECT * FROM 表名 3:数据更新 4:WHERE子句 比较运算符,确定 1:查询 SELECT语句 2:唯一值、 SELECT DISTINCT 列名 FROM 表名; 3:WHERE…

SQL数第四章五章

一:三范式 1:第一范式 1:每一列的数据类型 2:没有重复的组 3:每个表至少都有一个主键 2:第二范式 1:在第一个表的基础上,主键和列之间不存在局部相关性。 3:第三范…

org.springframework.beans.factory.BeanCreationException 对多个参数的设值依赖注入出现的问题...

设值依赖注入一定要注意!!!!! ①需要有一个无参构造函数(类中没有写任何的构造函数,默认就是有一个构造函数,如果写了任何一个构造函数,默认的无参构造函数就不会自动创建…