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

news2024/11/24 5:30:46

什么是图?

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

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

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

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

图的建立:

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

无向图:

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

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

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

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

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

有向图:

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

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

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

图的存储

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

也就是建立一个二维矩阵 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.coloradmin.cn/o/1230103.html

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

相关文章

哪些软件可以监控电脑(保姆级教程!值得收藏!)

今天了解到了一个软件&#xff0c;真的把我吓到了。 我才知道原来我上班时摸鱼时多么愚蠢的一件事情。原来老板可以通过一些软件轻而易举的知道你用电脑做的所有事情&#xff0c;怪不得我每次摸鱼时老板看我的眼神都不对…… 安装好域之盾软件以后&#xff0c;打开就能监控你使…

2023年通信安全员ABC证证模拟考试题库及通信安全员ABC证理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年通信安全员ABC证证模拟考试题库及通信安全员ABC证理论考试试题是由安全生产模拟考试一点通提供&#xff0c;通信安全员ABC证证模拟考试题库是根据通信安全员ABC证最新版教材&#xff0c;通信安全员ABC证大纲整理…

使用Dockerfile构建hexo博客镜像,并部署

基于centos7.9父镜像构建hexo:1.0镜像&#xff1a; cat << eof > Dockerfile # 根镜像 FROM centos:7.9.2009 MAINTAINER qv123<qv1095322098163.com> # 设置工作目录 WORKDIR /usr/src/app # 暴露端口号 EXPOSE 4000 # 作者注释 MAINTAINER qv123<qv1095322…

用对了吗?正确打开文件传输助手的方式

在这个高速发展的信息时代&#xff0c;我们每天都会面临一个重要的问题&#xff1a;如何在手机和电脑之间快速、高效地传输文件&#xff1f; 有时候&#xff0c;我们需要把工作中的一份报告从电脑传到手机&#xff0c;以便在路上查看&#xff1b;有时候&#xff0c;我们又想把手…

当代职场人做分析,当然要用大数据分析工具

不管是从效率、分析的可用性以及灵活性来看&#xff0c;用大数据分析工具都还板上钉钉的。毕竟大数据分析工具集齐了大数据时代数据分析工具应具备的特点优势。 1、对接ERP&#xff0c;立得100BI报表 点击对接金蝶、用友ERP后&#xff0c;BI系统立即即可取数分析&#xff0c;…

FPC焊点剥离失效分析

一、案例背景 FPC在后续组装过程中&#xff0c;连接器发生脱落。在对同批次的样品进行推力测试后&#xff0c;发现连接器推力有偏小的现象。据此进行失效分析&#xff0c;明确FPC连接器脱落原因。 #1、#2样品连接器脱落连接器脱落&#xff1b;#3样品连接器未脱落&#xff1b;…

Windows系统搭建VisualSVN服务并结合内网穿透实现公网访问

目录 前言 1. VisualSVN安装与配置 2. VisualSVN Server管理界面配置 3. 安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4. 固定公网地址访问 总结 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源…

单链表相关面试题--2.反转一个单链表

/* 解题思路&#xff1a; 此题一般常用的方法有两种&#xff0c;三指针翻转法和头插法 1. 三指针翻转法记录连续的三个节点&#xff0c;原地修改节点指向 2. 头插法每一个节点都进行头插 */ // 三个指针翻转的思想完成逆置 struct ListNode* reverseList(struct ListNode* head…

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

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

使用Python实现3D曲线拟合

曲线拟合是数据分析和数学建模领域中广泛使用的技术。它涉及到寻找最接近一组数据点的数学函数的过程。在3D曲线拟合中&#xff0c;该过程被扩展到三维空间&#xff0c;其中的目标是找到最好地表示一组3D数据点的函数。 Python是一种用于科学计算的流行编程语言&#xff0c;它…

三、机器学习基础知识:Python常用机器学习库(图像处理相关库)

文章目录 1、OpenCV1.1 窗口操作函数1.2 图像处理1.3 图像捕获与人脸检测 2、PIL2.1 主要函数2.2 表情图像合成2.3 手写数字转换2.4 滤波查找图像边缘 1、OpenCV OpenCV Python是一个用于解决计算机视觉问题的Python库&#xff0c;是用基于C实现的OpenCV构成的Python包。OpenC…

【C语言 | 指针】多级指针、多维数组

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

亚马逊、shein新品如何快速获得页面流量?自养号技术防关联解决要点及好处

在当今电子商务时代&#xff0c;亚马逊已经崭露头角&#xff0c;成为全球最大的在线零售商之一。数以亿计的消费者在亚马逊上购物为新产品提供了机会&#xff0c;但要在激烈的竞争中脱颖而出并快速获得页面流量并不是一件容易的事情。本文将详细探讨亚马逊新品如何快速获取页面…

C++ 继承和派生 万字长文超详解

本文章内容来源于C课堂上的听课笔记 继承和派生基础 继承是一种概念&#xff0c;它允许一个新创建的类&#xff08;称为子类或派生类&#xff09;获取另一个已经存在的类&#xff08;称为父类或基类&#xff09;的属性和行为。这就好比是子类继承了父类的特征。想象一下&…

拼多多官方开放平台接口app商品详情接口获取实时商品详情数据演示

拼多多开放平台提供了一种名为“商品详情接口”的API接口&#xff0c;它允许卖家从自己的系统中快速获取商品信息&#xff0c;如商品标题、描述、价格、库存等&#xff0c;并将这些信息展示在自己的店铺中。通过该接口&#xff0c;卖家可以更好地管理自己的商品库存和销售&…

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

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

9.docker镜像Tag为none的原因

1.现象 使用docker images命令查看镜像列表&#xff0c;会发现存在许多标签为none的镜像&#xff1a; 2. 原因 docker镜像标签为none的原因如下&#xff1a; &#xff08;1&#xff09;构建或重新拉取同名同Tag的新镜像&#xff1a;构建或重新拉取同名同Tag的新镜像后&…

SpringSecurity6 | 问题答疑

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

计算机专业毕业后的选择有哪些?

这就得看你自己的职业规划啦&#xff0c;现在考公考研也很卷&#xff0c;就业环境也不太乐观&#xff0c;既然这样&#xff0c;做选择就遵守自己的内心&#xff0c;从自己的职业规划和兴趣来选吧。 下面我们就先对这三条路的职业方向来做分析&#xff1a; 1.考研 考研也有两…

mongodb——概念介绍(文档,集合,固定集合,元数据,常用数据类型)

mongodb 层级结构 实例&#xff1a;系统上运行的进程及节点集&#xff0c;一个实例可以有多个库&#xff0c;默认端口 27017。 库&#xff1a;多个集合组成数据库&#xff0c;每个数据库都是独立的&#xff0c;有自己的用户、权限信息&#xff0c;独立的存储文件集 合。 集合&…