【C++算法模板】图的存储-邻接矩阵

文章目录

    • 邻接矩阵
    • 洛谷3643 图的存储

邻接矩阵

  • 邻接矩阵相比于上一篇博客邻接表的讲解要简单得多
  1. 数据结构,如果将二维数组 g g g 定义为全局变量,那默认初始化应该为 0 0 0 ,如果题目中存在自环,可以做特判, m e m s e t memset memset 初始化数组 g g g 0 x 3 f 3 f 3 f 3 f 0x3f3f3f3f 0x3f3f3f3f 表示无穷大, 0 0 0 表示自环
// 邻接矩阵
int d[N]; // 存储每个顶点的度
int g[N][N]; // 邻接矩阵
  1. 以下模板是无向图的邻接矩阵模板,如果改成有向图,和邻接表一样,不需要对称建边,比如有一条边是 ( 1 , 3 ) (1,3) (1,3),则 $d[1]++,\ g[1][3]=1 $ 即可
// 输入边
while(m--) {
    int u,v;
    scanf("%d%d",&u,&v);
    // 邻接矩阵建边
    d[u]++,d[v]++; // 顶点u和顶点v度数+1
    g[u][v]=1,g[v][u]=1; // 互相可达,为0表示不可达(如果题目涉及自环可用memset初始化为0x3f3f3f3f表示不可达)
}
  • 完整代码如下,注意代码采用无向图模板
#include<bits/stdc++.h>
#define x first
#define y second

using namespace std;

typedef long long ll;
typedef pair<int,int> PII;

// 解题思路: 图的存储-邻接矩阵

const int N=1e3+5;
const int M=(1e5+5)*2; // 无向图建边最大边数为题目最大边数*2

// 邻接矩阵
int d[N]; // 存储每个顶点的度
int g[N][N]; // 邻接矩阵

int main() {
	// 假设题目编号默认从1开始
	int n,m; // 存储顶点数和边数
	// 输入边
	while(m--) {
		int u,v;
		scanf("%d%d",&u,&v);
		// 邻接矩阵建边
		d[u]++,d[v]++; // 顶点u和顶点v度数+1
		g[u][v]=1,g[v][u]=1; // 互相可达,为0表示不可达(如果题目涉及自环可用memset初始化为0x3f3f3f3f表示不可达)
	}
	// 输出邻接矩阵
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=n;j++) {
			cout<<g[i][j]<<' ';
		}
		cout<<endl;
	}
	return 0;
}
  • 关于邻接表和链式前向星的讲解在我的博客:【C++模板】图的存储-邻接表,手撕链式前向星,超详细代码注释

洛谷3643 图的存储

题目链接:B3643 图的存储 - 洛谷

在这里插入图片描述

#include<bits/stdc++.h>
#define x first
#define y second

using namespace std;

typedef long long ll;
typedef pair<int,int> PII;

// 解题思路: 

const int N=1e3+10; // 最大顶点
const int M=(1e5+10)*2; // 最大边数

int n,m; // 顶点数和边数
int u,v;

// 邻接矩阵
int d[N]; // 存度数
int g[N][N]; // 邻接矩阵

// 邻接表
int h[N]; // h[i]:编号i的顶点的
int ne[M];
int e[M];
int idx; // 建树因子

// 链式前向星(头插法)
void add(int a,int b) {
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}

int main() {
	cin>>n>>m;
	memset(h,-1,sizeof h); // 初始化
	while(m--) {
		scanf("%d%d",&u,&v);
		// 邻接矩阵建边
		d[u]++,d[v]++; // 度数+1
		g[u][v]=1,g[v][u]=1; // 互达
		// 邻接表建边
		add(u,v);
		add(v,u);
	}
	// 遍历邻接矩阵
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=n;j++) {
			cout<<g[i][j]<<' ';
		}
		cout<<endl;
	}
	// 遍历邻接表
	for(int i=1;i<=n;i++) {
		cout<<d[i]<<' '; // 先输出点i的度数
		vector<int> s;
		for(int j=h[i];j!=-1;j=ne[j]) {
			int t=e[j];
			s.push_back(t);
		}
		// 编号从小到大排序
		sort(s.begin(),s.end());
		for(auto t:s) cout<<t<<' ';
		cout<<endl;
	}
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序云开发教程——墨刀原型工具入门(常用组件)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

docker+elasticsearch

一&#xff0c;环境准备&#xff1a;安装docker&#xff08;往期文章&#xff09; 二&#xff0c;elasticsearch简介&#xff1a; 用于储存数据 三&#xff0c;部署&#xff1a; 1&#xff09;&#xff0c;拉取镜像 使用本作者提供的java17镜像 2&#xff09;&#xff0c;…

基于大模型的Agent进行测试评估的3种方案

本文首发于博客 基于大模型的Agent进行测试评估的3种方案 我们都知道当前基于大模型构建的 Agent 能力极不稳定&#xff0c;而今年我司产品又在规划接入 Agent 能力&#xff0c;所以在引入之前&#xff0c;需要先设计一套测试框架&#xff0c;来看看各种场景下容错率是否能达…

Linux 基本命令

文章目录 1.echo2.cd3.find4.mkdir5.cp6.rm7.wc8.tar9.tail10.vim11.grep12.sed13 touch14 ls15 快捷键16 ln17 mv18 useradd19 usermod20 su 每天一个Linux命令 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 1.echo 中文 (Chinese): “回声” 或 “输…

分布式链路追踪(一)SkyWalking(2)使用

一、使用方法 1、简介 agent探针可以让我们不修改代码的情况下&#xff0c;对Java应用上使用到的组件进行动态监控&#xff0c;获取运行数据发送到OAP上进行统计和存储。agent探针在Java使用中是使用Java agent技术实现。不需要更改任何代码&#xff0c;Java agent会通过虚拟…

Linux虚拟机安装Qt步骤记录

(一&#xff09;安装命令&#xff0c;按照网上的教程&#xff0c;亲测可行 在终端中依次输入以下命令&#xff0c; 1.更新软件源列表&#xff1a; sudo apt-get update 2.安装Qt开发工具包,windows上我用的是Qt6,根据网上也是初次在Linux上安装Qt,安装版本5应该问题不大&…

智慧农业新篇章:DSSAT模型、APSIM模型、WOFOST与PCSE模型综合应用,引领作物生长模拟与产量预测新潮流

目录 ★WOFOST模型与PCSE模型应用 ★基于R语言APSIM模型进阶应用与参数优化、批量模拟 ★最新DSSAT作物模型建模方法及应用 ★基于Python语言快速批量运行DSSAT模型及交叉融合、扩展应用 ★R语言与作物模型&#xff08;以DSSAT模型为例&#xff09;融合应用 ★遥感数据与…

论文阅读——VSA

VSA: Learning Varied-Size Window Attention in Vision Transformers 方法&#xff1a; 给定输入特征X&#xff0c;VSA首先按照基线方法的例程&#xff0c;将这些标记划分为几个窗口Xw&#xff0c;窗口大小为预定义的w。我们将这些窗口称为默认窗口&#xff0c;并从默认窗口中…

KMP算法——解决字符串匹配问题

一般来说在你没学过KMP算法前&#xff0c;你解决字符串匹配问题会采用BF算法——BF算法&#xff0c;即暴力(Brute Force)算法&#xff0c;是普通的模式匹配算法&#xff0c;BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配&#xff0c;若相等&#xff0c;…

BM1684X搭建sophon c++环境

1:首先安装编译好sophon-sail 比特大陆BM1684X开发环境搭建--SOC mode-CSDN博客 2:在将之前配置的soc-sdk拷贝一份到sdk根目录&#xff0c;将交叉编译好的sail中的build_soc拷贝至soc-sdk文件夹内&#xff1b; cp -rf build_soc/sophon-sail/inlcude soc-sdk cp -rf build_soc…

YOLOv8独家改进:backbone改进 | TransXNet:聚合全局和局部信息的全新CNN-Transformer视觉主干| CVPR2024

💡💡💡本文独家改进:CVPR2024 TransXNet助力检测,代替YOLOv8 Backbone 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适合paper !!! 💡…

突发:日本火箭发射后爆炸

综合路透社、法新社13日消息&#xff0c;现场直播画面显示&#xff0c;日本初创公司Space One火箭发射失败&#xff0c;在半空中发生爆炸。 ▲日媒视频报道截图 据共同社此前介绍&#xff0c;Space One公司11日宣布&#xff0c;13日上午11点零1分将从日本首个民用火箭发射场“…

数据集成平台选型建议

一 数据集成介绍 数据集成平台是一种用于管理和协调数据流动的软件工具或服务。它的主要目标是将来自多个不同数据源的数据整合到一个统一的、易于访问和分析的数据存储库中。这些数据源可以包括数据库、云应用、传感器、日志文件、社交媒体等等。数据集成平台的关键任务是确保…

代码随想录算法训练营第五九天 | 下一个更大元素II、接雨水

目录 下一个更大元素II接雨水 LeetCode 503.下一个更大元素II LeetCode 42. 接雨水 下一个更大元素II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一…

《Ubuntu20.04环境下的ROS进阶学习2》

一、使用rviz和gazebo实时仿真 本节我们将使用三维可视化工具rviz&#xff08;The Robot Visualization Tool&#xff09;来实时观测gazebo仿真中的激光雷达数据。 二、打开仿真gazebo项目 如果您已经按照 《Ubuntu20.04环境下的ROS进阶学习0》-CSDN博客 如果您已经按照上次的文…

C++作业day2

封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #include <iostre…

计算机网络面经八股-HTTP常见的状态码有哪些?

常见状态码&#xff1a; 200&#xff1a;服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。301 &#xff1a; (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时&#xff0c;会自动将请求者转到新位置。302&…

浅淡 C++ 与 C++ 入门

我们知道&#xff0c;C语言是结构化和模块化的语言&#xff0c;适用于较小规模的程序。而当解决复杂问题&#xff0c;需要高度抽象和建模时&#xff0c;C语言则不合适&#xff0c;而C正是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库…

基于JAVA的数码产品应用平台设计与实现【附项目源码】分享

基于JAVA的数码产品应用平台设计与实现&#xff1a; 源码地址&#xff1a;https://download.csdn.net/download/weixin_43894652/88842576 基于Web的数码产品应用平台设计与实现需求文档 一、引言 随着科技的飞速发展和数码产品的普及&#xff0c;用户对于获取数码产品信息…

淘宝扭蛋机小程序:探索未知的惊喜之旅

你是否曾在商场里被那闪闪发光的扭蛋机吸引&#xff0c;却因为种种原因无法下手&#xff1f;现在&#xff0c;淘宝扭蛋机小程序带给你全新的扭蛋体验&#xff0c;让你随时随地都能感受到那份未知的惊喜。 淘宝扭蛋机小程序是一款集娱乐与购物于一体的全新应用。它汇聚了众多热…
最新文章