首页 > 其他分享 >【汇总】图的存储方法

【汇总】图的存储方法

时间:2024-11-23 10:01:54浏览次数:10  
标签:存储 int 汇总 cin back -- cnt push 方法

本篇博客汇总了多种储存图的方法,为了帮自己梳理知识qwq

(封面抽象)

一. 邻接矩阵

空间复杂度 O(n^2)。

适用于点少、边多的稠密图,不适用于点多、边少的稀疏图 。

代码框架:(均已储存无向图为例)

const int N = 10;
int g[N][N];
cin >> n >> m;
while(m--)
{
	int u, v, w;
	cin >> u >> v >> w;
	g[u][v] = w;
	g[v][u] = w;
}

二. 邻接表

空间复杂度O(n+m)。

使用于点多、边少的稀疏图 。

代码框架:

vector<int> e[N];
//e[i]:可以到达i点的边的数量
while(m--)
{
	int u, v;
	cin >> u >> v;
	e[u].push_back(v);
	e[v].push_back(u);
}

完整代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int n, m;
vector<int> e[N];

int main()
{
	cin >> n >>m;
	while(m--)
	{
		int u, v, w; 
		cin >> u, v, w;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	for(int i = 1; i <= n; i++)
	{
		cout << i << ":";
		for(int j = 0; j < e[i].size(); j++)
		{
			cout << e[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

三. 链式前向星

struct node
{
	int to;	//到达点
	int wei; //边权
	int next; //下一条边号 
} e[N*N];
int haed[N]; //i号点邻接表的第一条边 
int cnt; //数组下标

void add(int a, int b, int c)
{
	e[++cnt].to = b;
	e[cnt].wei = c;
	e[cnt].next = head[a];
	head[a] = cnt;
}

while(m--)
{
	int u, v, w;
	cin >> u >> v >> w;
	add(u, v, w);
}
//遍历输出邻接表
for(int i = 1; i <= n; i++)
{
	cout << i << ": ";
	for(int j = head[i]; )
}

(拜拜ヾ(•ω•`)o)水了一篇

标签:存储,int,汇总,cin,back,--,cnt,push,方法
From: https://blog.csdn.net/Cute_Qiuwen/article/details/143987209

相关文章

  • 移动端点击事件为什么会有延迟?延迟多长时间?有哪些方法可以解决?
    移动端点击事件的延迟,主要是因为浏览器需要区分用户是单击还是双击等其他手势。这段延迟通常是300ms左右,但具体时间取决于浏览器和设备。以下是造成延迟的原因和一些解决方案:原因:双击缩放(DoubleTaptoZoom):这是最主要的原因。移动浏览器为了识别双击缩放手势,会在用户第一......
  • 堪称2024最强Java八股文面试题汇总
    1.Java的基本数据类型有哪些?答:Java的基本数据类型包括:整型:byte, short, int, long浮点型:float, double字符型:char布尔型:boolean2.Java中的变量作用域有哪些?答:Java中的变量作用域主要有:类变量(静态变量):作用域为整个类,可以在类的任何地方访问。实例变量:作用域为类的非......
  • pnpui.dll是什么?深入了解pnpui.dll其重要性及缺失应对方法
    pnpui.dll是Windows操作系统中的一个关键动态链接库(DLL)文件,它与即插即用(PlugandPlay,PnP)功能密切相关。以下是对pnpui.dll的详细介绍,包括其重要性以及缺失时的应对方法。一、pnpui.dll的概述定义:pnpui.dll是Windows操作系统中的一个DLL文件,负责处理与即插即用功能相关的用......
  • c语言之正负整数在内存中的存储本质
    int、short、long、longlong是如何定义变量的        我们先从最为我们所知的定义变量入手,当我们用int定义一个变量的时候,这个变量是整型,长度是4个字节,不同的操作系统下由int定义的变量长度有可能不同,当然对于short、long、longlong也是同样如此,因此为了使大家更清......
  • redis高级篇之IO多路复用select方法简介 第174节答疑
    1、bitmap最大1024位,一个进程最多只能处理1024个客户端2、&rset不可重用,每次socket有数据就相应的位会被置位3、文件描述符数组拷贝到了内核态(只不过无系统调用切换上下文的开销。(内核层可优化为异步事件通知)),仍然有开销。select调用需要传入fd数组,需要拷贝一份到内核,高......
  • 【信奥赛·算法基础】CSP-J C++ 贪心算法示例汇总
    序言为了更清晰的了解贪心算法,我把常见的贪心算法示例做了一个总结,把问题和策略,以及代码示例放到了一起,方便学习和分析,这里示例仅以C++为例,其他语言可根据示例调整即可一、钱币找零问题问题描述:给定不同面额的钱币以及每种面额的数量,用最少的钱币张数凑齐给定的总金额。......
  • oracle数据库---PL/SQL、存储函数、存储过程、触发器、定时器job、备份
    PL/SQL什么是PL/SQLPL/SQL(Procedure Language/SQL)是Oracle对sql语言的过程化扩展,指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,使得PLSQL面向过程但比过程语言简单......
  • 为什么 Spring Boot 的微服务架构被称为“现代应用开发的曙光”?这种设计真的解决了传
    目录1.微服务架构为何被称为“现代应用开发的曙光”1.1单体架构的问题1.2微服务架构的诞生与发展1.3微服务架构的挑战2.SpringBoot在微服务中的角色2.1自动化配置与微服务开发2.2SpringCloud生态中的微服务3.微服务架构是否真的解决了传统单体架构中的所......
  • 常见的数据库删除方法
    常用的三种删除方式:通过delete、truncate、drop关键字进行删除;这三种都可以用来删除数据,但场景不同。执行速度:drop>truncate>>DELETE1、delete命令DELETE属于数据库DML操作语言。在InnoDB中,DELETE其实并不会真的把数据删除,mysql实际上只是给删除的数据打了个标......
  • 使用 Windows Management Instrumentation (WMI) 更新用户的 DNS 设置可以通过几种方
    使用WindowsManagementInstrumentation(WMI)更新用户的DNS设置可以通过几种方法实现,主要是使用Win32_NetworkAdapterConfiguration类来修改网络适配器的DNS设置。以下是一个使用PowerShell脚本的示例,展示如何通过WMI更新DNS设置。使用PowerShell更新DNS设置......