学习笔记2(图的连通性)

图的遍历

方法一:宽搜

queue<int> q;
void bfs(int s){
	q.push(s);
	mark[s]=1;
	while(q.size()){
		int x=q.front();
		q.pop();
		cout<<x<<endl;
		for(int i=Last[x];i;i=Next[i]){
			int y=End[i];
			if(!mark[y]){
				q.push(y);
				mark[y]=1;
			}
		}
	}
}

方法二:前序遍历

void dfs(int x){
	cout<<x<<endl;
	mark[x]=1;
	for(int i=Last[x];i;i=Next[i]){
		int y=End[i];
		if(!mark[y])
			dfs(y);
	}
}

方法三:后序遍历

void dfs(int x){
	mark[x]=1;
	for(int i=Last[x];i;i=Next[i]){
		int y=End[i];
		if(!mark[y])
			dfs(y);
	}
	cout<<x<<endl;
}

PS:为了节约篇幅,以下代码全部是暴力存图,请换成更优化的存图方式!!!

连通图

在无向图中,任意两点都直接联通或间接联通。

子图

表示在一个图中删去若干条边或删去若干点得到的新的图就是它本身的子图(说白了就是一个图的一部分)

PS:一个图的子图包括它本身

如果一个图的子图是连通图,则称这个子图为联通子图

连通分量

无向图G的最大联通子图成为G的连通分量

最大连通子图的含义:

该子图是G的连通子图,将G的任何不在该子图中的了点加入到该子图后,该子图将不再连通。

有向图的连通性

在有向图中,对于每一对定点Vi,Vj都存在从Vi到Vj和从Vj到Vi的路径(任意两点之间都存在可到达对方的路径),则称改图为强连通图。

如果有向图G的子图是连通图,则称这个子图为强连通子图

有向图G的最大强连通分量称为G的强连通分量。

最大强连通分量的含义:

该子图是G的强连通子图

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 学习笔记整理 一、Linux 简介 Linux,全称 GNU/Linux,是一种自由和开放源代码的类 Unix 操作系统,它主要是由 Linus Torvalds 在 1991 年创建的。Linux 操作系统具有多用户、多任务、多线程、支持多种文件系统、网络功能强大等优点。 二、Linux 基础命令 1. 基本操作命令 cd:切换目录,例如:cd /usr/local ls:查看目录下文件,例如:ls /usr/local mkdir:创建目录,例如:mkdir test rmdir:删除目录,例如:rmdir test cp:复制文件,例如:cp a.txt b.txt rm:删除文件,例如:rm a.txt mv:移动文件或修改文件名,例如:mv a.txt b.txt 或 mv a.txt /usr/local 2. 文件操作命令 cat:查看文件内容,例如:cat a.txt more:分页显示文件内容,例如:more a.txt less:分页显示文件内容,例如:less a.txt head:显示文件头部内容,例如:head a.txt tail:显示文件尾部内容,例如:tail a.txt grep:查找文件中的关键字,例如:grep "hello" a.txt 3. 权限相关命令 chmod:修改文件权限,例如:chmod 755 a.txt chown:修改文件所属用户和组,例如:chown user:group a.txt su:切换用户,例如:su root sudo:以管理员权限执行命令,例如:sudo apt-get install nginx 4. 网络相关命令 ping:测试网络连通性,例如:ping www.baidu.com ifconfig:查看网络接口信息,例如:ifconfig netstat:查看网络连接状态,例如:netstat -an nslookup:解析域名,例如:nslookup www.baidu.com 5. 系统管理命令 ps:查看进程状态,例如:ps -ef top:实时查看系统资源占用情况,例如:top kill:终止进程,例如:kill 1234 free:查看系统内存使用情况,例如:free -m df:查看磁盘使用情况,例如:df -h 三、常用 Linux 发行版 1. CentOS CentOS(Community Enterprise Operating System)是一款基于 Red Hat Enterprise Linux(RHEL)源代码的 Linux 发行版,它是一个稳定、可靠且高性能的服务器操作系统,广泛用于企业服务器领域。 2. Ubuntu Ubuntu 是一款基于 Debian 的 Linux 发行版,它以易用性、稳定性和安全性著称,适合用于桌面和服务器领域。 3. Debian Debian 是一个由志愿者组成的开源社区开发的 Linux 发行版,以稳定性和安全性著称,适合用于服务器和桌面领域。 4. Fedora Fedora 是由 Red Hat 公司赞助的一个社区项目,它是一个面向桌面用户的 Linux 发行版,以最新的软件包和技术为特点。 四、Linux 常用软件 1. Apache Apache 是世界上最流行的 Web 服务器软件之一,它是一款免费、开源的软件,支持多种操作系统和编程语言,适用于企业和个人网站搭建。 2. MySQL MySQL 是一款流行的关系型数据库管理系统,它是免费、开源的软件,支持多种操作系统和编程语言,适用于企业和个人网站数据存储。 3. Nginx Nginx 是一款高性能的 Web 服务器软件,它是免费、开源的软件,支持多种操作系统和编程语言,适用于企业和个人网站搭建。 4. Git Git 是一款流行的分布式版本控制系统,它是免费、开源的软件,支持多种操作系统和编程语言,适用于团队协作和代码管理。 五、Linux 学习资源推荐 1. Linux 命令大全 2. Linux 教程 3. Linux 学习路径 4. Linux 知识库 5. Linux 命令在线手册 六、总结 本文介绍了 Linux 的基础知识、常用命令、常用发行版、常用软件和学习资源,希望能够帮助读者快速了解 Linux 并入门。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值