《洛谷深入浅出基础篇》 图的基本应用

什么是图?

我们在生活中学习中能看见很多图,地图,路线图,思维导图等等,它们都有一个特点,

你从中任找一个点,你可以找到,从这个点出发,能够到达什么地方,也许不能到达任何地方。

以这个点为终点,有哪些点能到达这个点。

利用图,我们可以有方向地去到每一个点。也能找到去到这个点最短的方法。

图的建立:

下面建立一个简单的图,来描述一些图的基本术语

无向图:

在这副地图之中,每个建筑物被称作:顶点

每对建筑物之间连接的小路叫做:边

走这条边需要花费的时间叫做:边权

 像这样的,一条路可以让两座建筑的人互相通行,不具有方向性的图,叫做无向图。

在无向图中,每个顶点所连接的边数,叫做每个顶点的度数。

有向图:

像这样的,一条路只允许一种方向的人通过,如果要两座建筑物之间互相往来,那么需要再建立一条单向路。这样的图叫做有向图。 

如果两个顶点之间有不止一条边直接连接,就称为重边。

如果一条边的起点和终点是相同的,就称为自环。

图的存储

方法一:邻接矩阵(无重边)

也就是建立一个二维矩阵 v[i][j] 代表,以i为起点,j为终点,的边权,如果v[i][j]=0说明i到j没有直接的路相连。

缺点就是,将图存入的时候,用到二重循环,假设有n个顶点,我们需要o(n^2)的空间复杂度,,遍历的时候,也是o(n^2)的时间复杂度。

方法二:邻接表

邻接矩阵和邻接表的区别就是,邻接表只存放具有边的顶点。减少了不必要的存放次数。

下面是邻接表的实现:

1,建立一个结构体,里面有两个变量,to,cost

分别代表,终点,边权。

2.建立一个二维vector   ,    vector<int> p [maxn]

每当读入一条边的<起点u,终点v,边权l> 用  p[u] .push_back((edge){ v,l}) 

using namespace std;
const int MAXN = 1005;
struct place {int to, cost;
};
vector <place > p[MAXN];
int v[MAXN][MAXN];
int main()
{int n,m;cin >> n>>m;while (m--){int u, v, l;cin >> u >> v >> l;p[u].push_back({ v, l });}for (int i = 1; i <= n; i++) {for (int j = 0; j < p[i].size(); j++) {v[i][p[i][j].to] = p[i][j].cost;}}for(int i = 1; i <= n; i++){for (int j = 1; j <= n; j++)cout << v[i][j] << ' ';cout << endl;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++历练之路】list的重要接口||底层逻辑的三个封装以及模拟实现

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a; 在C的世界中&#xff0c;有一种数据结构&#xff0c;它不仅像一个神奇的瑰宝匣&#xff0c;还像一位能够在数据的海洋中航行的智慧舵手。这就是C中的list&#xff0c;一个引人入胜的工具…

低代码平台全解析:衍生历程、优势呈现与未来趋势一览无余

在数字化时代&#xff0c;应用程序的开发与更新已成为企业保持竞争力的关键。传统的编码方式&#xff0c;虽然精细且功能强大&#xff0c;但耗时且要求开发者具备较高的技术水平。在这样的背景下&#xff0c;低代码开发平台的出现无疑为企业带来了福音。 低代码开发平台是一种创…

大数据-之LibrA数据库系统告警处理(ALM-12057 元数据未配置周期备份到第三方服务器的任务)

告警解释 系统安装完成后会检查元数据是否有周期备份到第三方服务器的任务&#xff0c;然后每1小时会检查一次。如果元数据未配置周期备份到第三方服务器的任务&#xff0c;将发送严重告警。 在用户创建元数据周期备份到第三方服务器的任务后&#xff0c;告警消除。 告警属性…

Redis ACL 规则说明

Redis ACL 规则说明 前情回顾ACL 定义规范启用和禁用用户允许和禁止调用命令允许或禁止访问某些 Key为用户配置有效密码 ACL 命令说明 前情回顾 上一篇文章 我们整体性的介绍了 Redis 的 ACL&#xff0c;我们来回顾下 ACL 的两种配置方式。 redis 使用 acl 有两种方式可以配置…

微服务 Spring Cloud 7,Nacos配置中心的Pull原理,附源码

目录 一、本地配置二、配置中心1、以Nacos为例&#xff1a;2、Pull模式3、也可以通过Nacos实现注册中心 三、配置中心提供了哪些功能四、如何操作配置中心1、配置注册2、配置反注册3、配置查看4、配置变更订阅 五、主流的微服务注册中心有哪些&#xff0c;如何选择&#xff1f;…

为何公司强调流程员工总是觉得反感?

在企业管理中&#xff0c;流程设计对于提高效率和降低风险至关重要。然而&#xff0c;很多企业在流程设计时常犯一些常见的错误&#xff0c;导致基层员工对流程感到烦扰&#xff0c;甚至产生抵触情绪。本文将通过分析一个企业的报销流程问题&#xff0c;探讨如何优化流程以提高…

开关电源测试方法分享:开关电源关机维持时间的测试步骤、测试标准

开关电源关机维持时间是指切断电源后输出电压下降到稳压范围外为止的时间。关机维持时间是开关电源测试项目之一&#xff0c;测试时需要用到交流电源、电子负载、示波器等测试设备。那么开关电源测试系统要如何测试关机维持时间呢? 开关电源关机维持时间的测试步骤 关机维持时…

[C/C++]数据结构 LeetCode:用栈实现队列

题目描述: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返…

java基础练习缺少项目?看这篇文章就够了(上)!

公众号&#xff1a;全干开发 。 专注分享简洁但高质量的动图技术文章&#xff01; 项目概述 本教程适合刚学习完java基础语法的同学&#xff0c;涉及if语句、循环语句、类的封装、集合等基础概念&#xff0c;使用大量gif图帮助读者演示代码操作、效果等&#xff0c;是一个非常…

如何在 Linux 上部署 RabbitMQ

如何在 Linux 上部署 RabbitMQ 文章目录 如何在 Linux 上部署 RabbitMQ安装 Erlang从预构建的二进制包安装从源代码编译 Erlang RabbitMQ 的安装使用 RabbitMQ Assistant 连接 RabbitMQ Assistant 是一款优秀的RabbitMQ 可视化管理工具&#xff0c;提供丰富的管理功能。下载地址…

9、传统计算机视觉 —— 边缘检测

本节介绍一种利用传统计算机视觉方法来实现图片边缘检测的方法。 什么是边缘检测? 边缘检测是通过一些算法来识别图像中物体之间,或者物体与背景之间的边界,也就是边缘。 边缘通常是图像中灰度变化显著的地方,标志着不同区域的分界线。 在一张图像中,边缘可以是物体的…

2024有哪些免费的mac苹果电脑内存清理工具?

在我们日常使用苹果电脑的过程中&#xff0c;随着时间的推移&#xff0c;可能会发现设备的速度变慢了&#xff0c;甚至出现卡顿的现象。其中一个常见的原因就是程序占用内存过多&#xff0c;导致系统无法高效地运行。那么&#xff0c;苹果电脑内存怎么清理呢&#xff1f;本文将…

【SpringCloud】Eureka基于Ribbon负载均衡的调用链路流程分析

文章目录 前言1.调用形式2.LoadBalancerInterceptor3.负载均衡流程分析3.1 调用流程图3.2 intercept&#xff08;&#xff09;方法3.3 execute&#xff08;&#xff09;方法3.4 getServer()方法3.4 子类的chooseServer&#xff08;&#xff09;方法3.5 getLoadBalancerStats().…

基于Spring Boot 框架的试卷自动生成系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

2024年测试工程师必看系列之fiddler设置手机端抓包全套教程

fiddler设置手机端抓包 安卓手机抓包 第一步&#xff1a;配置电脑和安卓的相关设置 1、手机和fiddler位于同一个局域网内&#xff1b;首先从fiddler处获取到ip地址和端口号&#xff1a; &#xff0c;点击online&#xff0c;最后一行就是ip地址 2、路径&#xff1a;Tools》Op…

基于单片机的智能家居安保系统(论文+源码)

1.系统设计 本次基于单片机的智能家居安保系统设计&#xff0c;在功能上如下&#xff1a; 1&#xff09;以51单片机为系统控制核心&#xff1b; 2&#xff09;温度传感器、人体红外静释电、烟雾传感器来实现检测目的&#xff1b; 3&#xff09;以GSM模块辅以按键来实现远/近程…

SpringCloud微服务 【实用篇】| Eureka注册中心、Ribbon负载均衡

目录 一&#xff1a;Eureka注册中心 1. Eureka原理 2. 动手实践 ①搭建EurekaServer ②服务注册 ③服务发现 二&#xff1a;Ribbon负载均衡 1. 负载均衡原理 2. 负载均衡策略 3. 懒加载 一&#xff1a;Eureka注册中心 前面已经分析了&#xff0c;无论是SpringCloud还…

【前端学java】复习巩固-Java中的对象比较(14)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

南京--ChatGPT/GPT4 科研实践应用

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

云计算赛项容器云2023搭建

部署容器云平台[5 分] 使 用 OpenStack 私 有 云 平 台 创 建 两 台 云 主 机 &#xff0c; 云 主 机 类 型 使 用 4vCPU/12G/100G 类型&#xff0c;分别作为 Kubernetes 集群的 Master 节点和 node 节点&#xff0c; 然后完成 Kubernetes 集群的部署&#xff0c;并完成 Istio …