当前位置: 首页 > news >正文

用邻接矩阵实现图的深度优先遍历

问题描述

给定一个无向图,用邻接矩阵作为图的存储结构,输出指定顶点出发的深度优先遍历序列。在深度优先遍历的过程中,如果同时出现多个待访问的顶点,则优先选择编号最小的一个进行访问。

输入描述

第一行输入三个正整数,分别表示无向图的顶点数n(2≤n≤100,顶点从1到n编号)、边数m和指定起点编号s。
接下来的m行对应m条边,每行给出两个正整数,分别是该条边直接连通的两个顶点的编号。

输出描述

输出从 s开始的深度优先遍历序列,用一个空格隔开,最后也含有一个空格。如果从 s出发无法遍历到图中的所有顶点,则在第二行输出Non‑connected。

样例输入
5 4 1
1 2
3 1
5 2
2 3
样例输出
1 2 3 5 
Non-connected
#include<stdio.h>
#define MVNUM 10 //最大顶点数
typedef int VerTexType; //顶点数据类型为整型
typedef int ArcType; //边的权值为整型
typedef struct
{VerTexType vexs[MVNUM];//顶点表ArcType arcs[MVNUM][MVNUM]; //邻接矩阵int vexnum, arcnum; //图当前的顶点数和边数int visited[MVNUM];
}AMGraph;
static int LocateVex(AMGraph G, int v)  //在图中查找顶点
{for (int i = 0; i < G.vexnum; i++)if (v == G.vexs[i])return i;return -1;
}
static void CreateUDG(AMGraph &G)  //创建无向网
{for (int i = 0; i < G.vexnum; i++) //创建顶点表{G.vexs[i] = i + 1;G.visited[i+1] = 0;  //未搜索的顶点标记为0}for (int i = 0; i < G.vexnum; i++)  //邻接矩阵元素置零for (int j = 0; j < G.vexnum; j++)G.arcs[i][j] = 0;for (int k = 0; k < G.arcnum; k++){int v1 = 0, v2 = 0;scanf("%d%d", &v1, &v2);int i = LocateVex(G, v1);int j = LocateVex(G, v2);G.arcs[i][j] = 1;G.arcs[j][i] = 1;}return;
}
int count = 0;
static void DFS(AMGraph &G, int v)
{count++;printf("%d ", v);G.visited[v] = 1;  //访问过的顶点标记为1for (int j = 1; j <= G.vexnum; j++)if (G.arcs[v-1][j-1] && !G.visited[j])DFS(G, j);  //递归调用
}
int main()
{int s = 0;  //指定起点编号AMGraph G;scanf("%d%d%d", &G.vexnum, &G.arcnum, &s);CreateUDG(G);DFS(G, s);if (count < G.vexnum)printf("\nNon-connected");return 0;
}   

相关文章:

用邻接矩阵实现图的深度优先遍历

问题描述 给定一个无向图&#xff0c;用邻接矩阵作为图的存储结构&#xff0c;输出指定顶点出发的深度优先遍历序列。在深度优先遍历的过程中&#xff0c;如果同时出现多个待访问的顶点&#xff0c;则优先选择编号最小的一个进行访问。 输入描述 第一行输入三个正整数&#…...

vue2中实现token的无感刷新

后端配置 设置Token过期时间&#xff1a;在后端&#xff08;如服务器或网关&#xff09;配置access_token和refresh_token的过期时间。通常&#xff0c;access_token的过期时间较短&#xff0c;而refresh_token的过期时间较长。提供刷新Token接口&#xff1a;后端需要提供一个…...

无需Photoshop即可在线裁剪和调整图像大小的工具

Bitmind是一个灵活且易于使用的批量图像本地化处理器&#xff0c;经过抓包看&#xff0c;这个工具在浏览器本地运行&#xff0c;不会上传图片到服务器&#xff0c;所以安全性完全有保证。 它可以将图像调整到任何特定尺寸&#xff0c;并在必要时按比例裁剪。 这是一个在线工具…...

云安全之法律和合规

0x00 前言 本文主要内容是从法律&#xff0c;合同&#xff0c;电子举证&#xff0c;以及合规和审计这五个部分来记录一下相关的云安全内容 0x01 法律 受法律约束的影响因素 云服务所在的地区云用户所在的区域数据主体所在的区域 GDPR&#xff1a;通用数据保护法案&#xf…...

倒计时功能分享

今天想要分享的是一个面试题&#xff0c;也是一个我们在项目中常用的功能&#xff1a;倒计时。 首先我们在写倒计时的时候必须要考虑到是&#xff1a;准确性、性能。接下来我们一步一步实现这个完美地倒计时功能。 setInterval 先来简单实现一个倒计时的函数&#xff1a; func…...

【论文分享】使用多源数据识别建筑功能:以中国三大城市群为例

建筑功能对城市规划至关重要&#xff0c;而利用多源数据进行建筑功能分类有助于支持城市规划政策。本研究通过分析建筑特征和POI密度&#xff0c;识别了中国三个城市群的建筑功能&#xff0c;并使用XGBoost模型验证了其在大规模映射中的高准确性和有效性。研究强调了建筑环境对…...

华为手机启用ADB无线调试功能

打开开发者模式,勾选USB调试,和“仅充电”模式下允许ADB调试 确认 设置添加adb路径到PATH变量 使用adb查看安卓设置 切换为无线模式: 查看手机IP...

云原生之Kubernetes集群搭建

1、Kubernetets基础概念 传统的服务器架构演进,现在基于docker容器化应用可以完成快速部署,但是对于大型的应用,有可能出现成百上千个容器化应用,一个挂了需要人工管理是相当麻烦,因此急需一个大规模容器编排系统。 Kubernetes Kubernetes 是一个可移植、可扩展的开源平…...

STM32单片机CAN总线汽车线路通断检测

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展&#xff0c;车辆通信接口在汽车电子控…...

大连理工大学概率上机作业免费下载

大连理工大学概率论与数理统计上机资源 本资源库收录了大连理工大学概率论与数理统计课程的上机作业范例代码&#xff0c;旨在通过实际操作加深学生对概率统计概念的理解&#xff0c;帮助学生更好地理解和掌握知识点。 作业内容概览 第一题&#xff1a;随机变量关系探索 数…...

Tomcat 如何管理 Session

Tomcat 如何管理 Session 我们知道&#xff0c;Tomcat 中每一个 Context 容器对应一个 Web 应用&#xff0c;而 Web 应用之间的 Session 应该是独立的&#xff0c;因此 Session 的管理肯定是 Context 级的&#xff0c;也就是一个 Context 一定关联多个 Session。 Tomcat 中主…...

stm32启动过程解析startup启动文件

1.STM32的启动过程模式 1.1 根据boot引脚决定三种启动模式 复位后&#xff0c;在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。BOOT0 为专用引脚&#xff0c;而 BOOT1 则与 GPIO 引脚共用。一旦完成对 BOOT1 的采样&#xff0c;相应 GPIO 引脚即进入空闲状态&#xff0c;可用于…...

SystemVerilog学习——构造函数new

一、概述 在 SystemVerilog 中&#xff0c;new 是一个构造函数&#xff0c;用于创建类的实例&#xff08;即对象&#xff09;。它在面向对象编程&#xff08;OOP&#xff09;中起着重要作用&#xff0c;负责实例化一个对象并进行初始化。与传统编程语言&#xff08;如 C 或 Jav…...

力扣题目总结

1.游戏玩法分析IV AC: select IFNULL(round(count(distinct(Result.player_id)) / count(distinct(Activity.player_id)), 2), 0) as fraction from (select Activity.player_id as player_idfrom (select player_id, DATE_ADD(MIN(event_date), INTERVAL 1 DAY) as second_da…...

Java API 进阶指南:从核心API到高级应用的全面提升

文章目录 Java API 进阶学习指南1. 深入理解核心API1.1 集合框架&#xff08;Collections Framework&#xff09;1.2 输入输出流&#xff08;I/O Streams&#xff09;1.3 并发编程&#xff08;Concurrency&#xff09;1.4 反射&#xff08;Reflection&#xff09;1.5 泛型&…...

esp32c3开发板通过micropython的ubluetooth库连蓝牙设备

ESP32-C3开发板是一款高性能、低功耗的微控制器&#xff0c;搭载了Espressif自家的RISC-V处理器。通过MicroPython&#xff0c;一种面向微控制器的精简版Python编程语言&#xff0c;开发者可以轻松地为ESP32-C3编写代码。MicroPython的ubluetooth库使得ESP32-C3能够通过蓝牙与各…...

leetcode hot100【LeetCode 35.搜索插入位置】java实现

LeetCode 35.搜索插入位置 题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用 O(log n) 的时间复杂度来实现。 示例 1: 输入: nums [1,3,5,6…...

我们要用平凡来诠释非凡

#孟晚舟香港中文大学演讲# #华为价值观念# #并非站在山顶才能被看见# #传递正确的价值观# #如果信仰有颜色&#xff0c;那一定是中国红# #送给自己的价值理念# 在信息大爆炸的时代&#xff0c;很多同学都希望尽可能的抓取更多的知识&#xff0c;尽可能的不要遗漏任何热点…...

synchronized和volatile区别

synchronized和volatile是Java并发编程中两种重要的同步机制&#xff0c;它们之间存在明显的区别。以下是对这两者的详细比较&#xff1a; 一、基本定义与作用 synchronized 是一个用于实现线程同步的关键字。可以用来锁住方法或代码块&#xff0c;从而确保在同一时刻只有一个…...

125.验证回文串-力扣(LeetCode)

题目&#xff1a; 解题思路&#xff1a; 首先进行移除非字母数字字符&#xff0c;并将大写字符转换为小写字符的操作。这个过程中&#xff0c;主要利用快慢指针的方式来进行移除操作&#xff0c;通过加32将大写字符转换为小写字符。完成后&#xff0c;将前一半的数据与后一半的…...

线程间通信:wait和notify

线程间通信&#xff1a;wait和notify 1、Object的wait和notify方法 Java中的Object类提供了两个重要的方法&#xff0c;用于线程间的通信和同步&#xff1a;wait()方法和notify()方法 wait()方法的定义 方法签名&#xff1a;public final void wait() throws InterruptedEx…...

风险识别和管理的工具

1.‌风险识别工具和根本原因识别在项目管理中非常重要&#xff0c;常用的工具包括 因果图根本原因识别RCA鱼骨图 因果图 因果图是一种图形工具&#xff0c;用于识别问题或风险的根本原因。它通过将问题或风险因素与可能的根本原因联系起来&#xff0c;帮助团队更深入地了解问…...

qt之QFTP对文件夹(含嵌套文件夹和文件)、文件删除下载功能

一、前言 主要功能如下&#xff1a; 1.实现文件夹的下载和删除&#xff0c;网上很多资料都是单独对某个路径的文件操作的&#xff0c;并不能对文件夹操作 2.实现目标机中含中文名称自动转码&#xff0c;有些系统编码方式不同&#xff0c;下载出来的文件会乱码 3.实现ftp功能…...

为何数据库推荐将IPv4地址存储为32位整数而非字符串?

目录 一、IPv4地址在数据库中的存储方式&#xff1f; 二、IPv4地址的存储方式比较 &#xff08;一&#xff09;字符串存储 vs 整数存储 &#xff08;二&#xff09;IPv4地址"192.168.1.8"说明 三、数据库推荐32位整数存储方式原理 四、存储方式对系统性能的影响…...

Mybatis框架之责任链模式 (Chain of Responsibility Pattern)

在 MyBatis 框架中&#xff0c;责任链模式 (Chain of Responsibility Pattern) 被广泛应用于多个功能模块中&#xff0c;例如 插件拦截器、SQL 执行流程中的拦截器链、动态 SQL 的解析与处理等。这种设计模式为 MyBatis 提供了高度的扩展性和灵活性&#xff0c;使其能够轻松应对…...

C++ Stack和Queue---单向守护与无尽等待:数据结构的诗意表达

公主请阅 容器适配器容器适配器的特点 栈和队列的模拟实现deque的介绍1. 内存开销较高2.随机访问性能略低于 vector3. 与指针或迭代器的兼容性r4. 不适合用于需要频繁中间插入和删除的场景5. 在特定平台上的实现不一致6. 缺乏shrink_to_fit支持总结 题目 priority_queue 优先级…...

深入理解Java包装类与泛型的应用

今天我将带领大家进入Java包装类和泛型应用的学习。 我的个人主页 我的Java-数据结构专栏 &#xff1a;Java-数据结构&#xff0c;希望能帮助到大家。 一、Java包装类基础 二、Java泛型基础 三、Java包装类与泛型的结合 四、Java泛型进阶 五、Java包装类与泛型实战 一、Ja…...

【机器学习chp4】特征工程

推荐文章1&#xff0c;其中详细分析了为什么L1正则化可以实现特征选择&#xff08;特征剔除&#xff09; 【王木头 L1、L2正则化】三个角度理解L1、L2正则化的本质-CSDN博客 推荐文章2&#xff0c;里面详细分析了奇异值分解 【线性代数】矩阵变换-CSDN博客 本文遗留问题&#…...

LeetCode螺旋矩阵

快一个月没刷题了&#xff0c;最近工作有些忙&#xff0c;今天闲下来两小时&#xff0c;刷一道 题目描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4…...

第十五届蓝桥杯JAVA的B组题目详情解析

(第一个填空太简单&#xff0c;就不写了,根本不用代码&#xff0c;直接excel计算) 目录 蓝桥杯第二个填空&#xff0c;类斐波那契循环数 蓝桥杯JAVA.b组第三题 -分布式队列(模拟) 食堂(蓝桥杯D题) ​编辑 星际旅行(Floyd佛洛依德) 其余的有点变态&#xff0c;感觉学了好像…...

山东省住房和城乡建设厅网站首页/百度如何推广产品

前言 Matlab已经成为画曲线图最好用的语言之一了&#xff0c; 但是许多人并没有发现他的最好用之处——相比于大部分语言&#xff0c;需要记住一堆API函数才能绘制出想要的曲线&#xff0c; matlab提供了可视化的界面进行傻瓜式的画图操作&#xff0c; 实现指哪打哪的功能而不…...

网站海报做一张多少钱/搜索引擎市场份额2023

文章目录&#x1f449;&#x1f3fb;前言❤️主从模式说明&#x1f90d;logbin日志&#x1f90d;Mysql主从复制的流程&#x1f90d;主从复制中遇到的问题❤️主从模式配置&#x1f90d;Master配置&#x1f90d;Slave配置❤️其他设置&#x1f90d;半同步复制&#x1f90d;并行复…...

怎么做网站的登录界面/新品牌进入市场的推广方案

概述 pc端移动端中文本框监控字数的功能的一种较为简单的实现&#xff0c;考虑到安卓和IOS输入法输入过程中是否触发keyup的差异。利用监听compositionstart判断是否开启了输入法。从而实现体验较为良好兼容性较强的监控字数的控件。详细 代码下载&#xff1a;http://www.demod…...

在国外服务器上做网站项目如何赚钱吗/西安今日头条新闻

java中抽象类和空的方法体有什么区别&#xff1f; public abstract void test(); 抽象方法:可以在实现类中写方法体中的逻辑代码。 public void test(){};方法体为空&#xff1a;没有返回值&#xff0c;没有实际意义。 1、Java基础技术体系、JVM内存分配、垃圾回收、类装载机制…...

网站制作后台怎么做/最近新闻大事

文|魏启扬 来源|智能相对论&#xff08;aixdlun&#xff09; 继蔚来和理想先后上市&#xff0c;小鹏汽车不久前赴美递交招股书后&#xff0c;威马汽车也加快了上市的步伐。 9月22日&#xff0c;威马汽车官宣完成总额100亿人民币D轮融资&#xff0c;这也是造车新势力史上最大…...

软件公司网站设计与制作/网络公关公司收费

文章讲的是大数据驱动移动APP经济时代降临&#xff0c;美国移动APP行业协会(The App Association&#xff0c;简称ACT)发布了关于APP经济的第五份年度报告&#xff0c;并揭示了两年间在美国提供了大约11万个相关工作岗位。而在未来&#xff0c;随着移动应用程序从云端接收和发送…...