当前位置: 首页 > 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;将前一半的数据与后一半的…...

RESTful API最佳实践:构建优雅的接口设计

RESTful API最佳实践&#xff1a;构建优雅的接口设计 前言 大家好&#xff0c;我是cannonmonster01&#xff01;今天我们来聊聊RESTful API的最佳实践。 想象一下&#xff0c;你去一家餐厅吃饭。如果菜单混乱不堪&#xff0c;菜名不知所云&#xff0c;服务员态度恶劣&#x…...

Java基础全套教程(三)—— 控制语句、方法、递归算法

Java基础全套教程&#xff08;三&#xff09;—— 控制语句、方法、递归算法 本章是Java编程从基础语法走向逻辑编程的核心转折点。前面我们学习了变量、数据类型、运算符&#xff0c;只能实现简单的顺序执行代码。而真正的程序&#xff0c;需要具备判断能力、重复执行能力、代…...

本地优先 Web 应用开发:React/SQLite 前端、Supabase 后端与 PowerSync 同步引擎实践

本地优先 Web 应用开发&#xff1a;React/SQLite 前端、Supabase 后端与 PowerSync 同步引擎的实践与优势并非每天都会出现全新架构&#xff0c;如今浏览器内的 SQLite 结合响应式 SQL 和自动同步功能出现了&#xff0c;它能让前端即时交互&#xff0c;还能保持与后端数据一致&…...

vibe-to-ui:让AI助手将你的“感觉”翻译成专业设计系统

1. 项目概述&#xff1a;当“感觉”成为设计语言如果你和我一样&#xff0c;是一个能写出复杂业务逻辑&#xff0c;但一碰到UI设计就头疼的开发者&#xff0c;那今天聊的这个工具&#xff0c;可能会彻底改变你的工作流。我们常常陷入一个困境&#xff1a;心里有一个模糊的“感觉…...

Selenium自动化测试常见的异常处理

在软件开发和测试领域,Selenium作为一种广泛使用的自动化测试工具,扮演着至关重要的角色。随着自动化测试的不断普及,如何在测试过程中有效捕获并处理异常,成为了每个测试工程师必须掌握的技能。本文旨在深入探讨Selenium异常处理的方法,通过丰富的案例和代码,帮助新手朋…...

基于Jina Reader与Exa API的免费网页抓取与搜索工具实践

1. 项目概述&#xff1a;一个轻量级的网络信息抓取与处理工具最近在折腾一些自动化信息处理的项目&#xff0c;发现很多时候需要从网上快速抓取内容或者进行关键词搜索&#xff0c;然后对结果进行结构化处理。市面上的工具要么太重&#xff0c;要么收费&#xff0c;要么就是API…...

基于GitHub Actions的AI智能体部署指南:exoclaw-github实战解析

1. 项目概述&#xff1a;在GitHub里养一只会看代码的“螃蟹”如果你在GitHub上维护过开源项目&#xff0c;肯定遇到过这样的场景&#xff1a;新开的Issue描述不清&#xff0c;得来回问好几轮才能定位问题&#xff1b;PR提交上来&#xff0c;你得逐行审阅代码&#xff0c;既费时…...

[具身智能-670]:ROS2 Node内部的工作原理:rclpy.init()、node = MyNode() 、rclpy.spin(node)

一、三个函数的一句话功能rclpy.init()初始化 ROS2 全局系统&#xff08;上下文、信号处理、DDS&#xff09;。node MyNode()创建节点对象&#xff0c;注册名字&#xff0c;分配通信句柄&#xff0c;不创建线程。rclpy.spin(node)进入主线程死循环&#xff0c;不断检查消息 / …...

ImageTrans插件生态:用Python扩展图片OCR与翻译工作流

1. 项目概述&#xff1a;一个为ImageTrans量身定制的插件生态如果你经常需要处理图像中的文字&#xff0c;比如翻译漫画、本地化游戏截图或者处理带文字的UI设计稿&#xff0c;那你很可能听说过或者用过ImageTrans这款工具。它是一款专注于图片文字识别&#xff08;OCR&#xf…...

终极暗黑2存档编辑器:5分钟学会免费修改d2s文件的完整指南

终极暗黑2存档编辑器&#xff1a;5分钟学会免费修改d2s文件的完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾因暗黑破坏神2的角色属性分配不当而懊恼&#xff1f;是否因稀有装备难以获取而沮丧&#xff1f;d2s…...