大家好,又见面了,我是你们的朋友全栈君。
一、介绍
-
什么是邻接矩阵呢?所谓邻接矩阵存储结构就每个顶点用一个一维数组存储边的信息,这样所有点合起来就是用矩阵表示图中各顶点之间的邻接关系。所谓矩阵其实就是二维数组。
-
对于有 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账号...