【邻接矩阵】 & 【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

相关推荐
自动驾驶小卡1 小时前
boost::circular_buffer的使用方法简介
c++·boost·circular_buffer
钢门狂鸭2 小时前
关于rust的crates.io
开发语言·后端·rust
Lionel_SSL2 小时前
《深入理解Java虚拟机》第三章读书笔记:垃圾回收机制与内存管理
java·开发语言·jvm
Greedy Alg3 小时前
LeetCode 142. 环形链表 II
算法
睡不醒的kun3 小时前
leetcode算法刷题的第三十二天
数据结构·c++·算法·leetcode·职场和发展·贪心算法·动态规划
技术猿188702783513 小时前
PHP 与 WebAssembly 的 “天然隔阂”
开发语言·php·wasm
薄荷撞~可乐3 小时前
C#Task(Api)应用
开发语言·c#
先做个垃圾出来………4 小时前
残差连接的概念与作用
人工智能·算法·机器学习·语言模型·自然语言处理
乔宕一5 小时前
stm32 链接脚本没有 .gcc_except_table 段也能支持 C++ 异常
c++·stm32·嵌入式硬件
SuperCandyXu5 小时前
P3205 [HNOI2010] 合唱队-普及+/提高
c++·算法·洛谷