邻接矩阵的使用

邻接矩阵的使用一、介绍二、代码

大家好,又见面了,我是你们的朋友全栈君。

一、介绍

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

  • 对于有 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;
} 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146503.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号