邻接矩阵的使用

一、介绍

  • 什么是邻接矩阵呢?所谓邻接矩阵存储结构就每个顶点用一个一维数组存储边的信息,这样所有点合起来就是用矩阵表示图中各顶点之间的邻接关系。所谓矩阵其实就是二维数组。

  • 对于有 n个顶点的图 G=(V,E) 来说,我们可以用一个 n×n 的矩阵 A来表示 G 中各顶点的相邻关系,如果 vi和 vj​ 之间存在边(或弧),则 A[i][j]=1,否则 A[i][j]=0=0。下图为有向图 G 对应的邻接矩阵:
    在这里插入图片描述---- 在这里插入图片描述

二、不带权图

4 5
1 2
1 3
1 4
2 4
4 3

有向图:

#include <cstdio>
const int N = 1005;
int g[N][N];
int main() {
	int n, m; //n个点 m条边 
	scanf("%d%d", &n, &m);
	int u, v; //表示2个点u--->v 
	for (int i = 0; i < m; i++) {
		scanf("%d%d", &u, &v);
		g[u][v] = 1;//有向图 u-->v 
	} 
	//输出
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			printf("%d", g[i][j]);
		}
		printf("\n");
	} 
	return 0;
} 

无向图:

#include <cstdio>
const int N = 1005;
int g[N][N];
int main() {
	int n, m; //n个点 m条边 
	scanf("%d%d", &n, &m);
	int u, v; //表示2个点u--->v 
	for (int i = 0; i < m; i++) {
		scanf("%d%d", &u, &v);
		//无向图 
		g[u][v] = 1; 
		g[v][u] = 1; 
	} 
	//输出
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			printf("%d", g[i][j]);
		}
		printf("\n");
	} 
	return 0;
} 

三、带权图

在这里插入图片描述

#include <cstdio>
const int N = 1005;
int g[N][N];
int main() {
	int n, m; //n个点 m条边 
	scanf("%d%d", &n, &m);
	int u, v, w; //表示2个点u--->v   w代表权值 
	for (int i = 0; i < m; i++) {
		scanf("%d%d%d", &u, &v, &w);
		//有向图 
		g[u][v] = w; 
	} 
	//输出
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			printf("%d ", g[i][j]);
		}
		printf("\n");
	} 
	return 0;
} 
  • 25
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值