【邻接矩阵】 & 【AT-ABC343-B】

文章目录

邻接矩阵

邻接矩阵只适用于没有重边(或重边可以忽略)的情况

最显著的优点是可以 O ( 1 ) O(1) O(1) 查询一条边是否存在

由于邻接矩阵在稀疏图上效率很低(尤其是在点数较多的图上,空间无法承受),所以一般只会在稠密图上使用邻接矩阵

PS:一般在 n ≤ 1000 n\leq1000 n≤1000时使用邻接矩阵,其他可使用详见我的另一篇博文:链式前向星

邻接矩阵的时间复杂度

查询是否存在某条边: O ( 1 ) O(1) O(1)

遍历一个点的所有出边: O ( n ) O(n) O(n)

遍历整张图: O ( n 2 ) O(n^2) O(n2)

空间复杂度: O ( n 2 ) O(n^2) O(n2)

邻接矩阵的存储方式

有向图 :将a[i][j]赋值为1,代表第i个点j个点之间有一条边

无向图 :将a[i][j]赋值为1,将a[j][i]赋值为1,代表第i个点j个点之间有一条边

邻接矩阵详细解析

假定样例:

cpp 复制代码
6
1 2
3 4
2 4
1 5
1 4
3 3

领接矩阵code↓

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e4+50;
int n;
int a[maxn][maxn];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int x,y;
		cin>>x>>y;
		a[x][y]=1;
//		a[y][x]=1;//如果是无向图则启用
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

如果是有向图,则输出如下图

如果是无向图,则输出如下图

可以看出,他是沿对角线(蓝色这条线,如果在线上的则不变)对称

Atcoder例题【ABC343-B】

题目链接:Atcoder例题【ABC343-B】

题目以及题意解析

题意:给出一个矩阵,按升序打印与顶点i直接相连的顶点的个数

题目解析:只需要将这个矩阵当成邻接矩阵进行输入,然后依次 O ( n ) O(n) O(n)遍历即可

code↓

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e4+50;//边界
int n;//n*n的矩阵
int a[maxn][maxn];//定数组的边界,边界为maxn
int main(){
	cin>>n;//输入的是一个n*n的矩阵
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];//输入邻接矩阵,如果a[i][j]=1,那么代表i与j直接有边连接
			a[j][i]=a[i][j];//因为是无向图,而他们是对称的,所以需要倒过来再赋值一遍
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[i][j]==1) cout<<j<<" ";//如果他们直接相连,则输出直接相连的这一个点的编号
		}
		cout<<endl;//输出格式
	}
	return 0;
}

此做法已AC

完结撒花QWQ

相关推荐
kisshyshy12 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
众少成多积小致巨14 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
猿人谷20 小时前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络21 小时前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络21 小时前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao40021 小时前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao40021 小时前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
JieE2122 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2123 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack204 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法