邻接矩阵
05:21
用二维数组来存储边和权值,比如
设图的顶点数量为
如下图所示,设邻接矩阵为

邻接矩阵具有以下特性。
- 顶点不能与自身相连,因此邻接矩阵主对角线元素没有意义。
- 对于无向图,两个方向的边等价,此时邻接矩阵关于主对角线对称。
- 将邻接矩阵的元素从
和 替换为权重,则可表示有权图。
使用邻接矩阵表示图时,我们可以直接访问矩阵元素以获取边,因此增删查操作的效率很高,时间复杂度均为
邻接矩阵的复杂度

- 时间复杂度
- 空间复杂度
邻接矩阵的使用场景
点数不多的稠密图
邻接矩阵的实现
建图
int main() {
cin >> n >> m;
for(int i=1; i<=m; i++) {
cin >> a >> b >> c;
w[a][b] = c;
}
dfs(1); //遍历
}遍历
void dfs(int u) { //从哪个节点开始搜索
vis[u] = true; //这个节点来过
for(int v = 1; v <= n; v++) { //v的相邻节点
if(w[u][v]) { //这个节点是有值的,那么就是两点有联系
cout << u << v << w[u][v];
if(vis[v]) continue; //如果已经遍历过,1 2 20 和 2 1 20 是同一个东西,跳过
dfs(v); //向下搜子节点
}
}
}