邻接表

简介: 笔记

邻接表的数组实现

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f3f3f3f3f
#define mod 1000000007
#define IOS ios::sync_with_stdio(false)
#define endl '\n'
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
int first_edge[maxn], next_edge[maxn];
int u[maxn], v[maxn], w[maxn];
int n, m;
void init(){
  for (int i = 1;i <= n;++i)first_edge[i] = -1;//初始化为-1代表顶点1~n暂时没有边
}
void get_edge() {
  int k = 0;
  for (int i = 1;i <= n;++i) {//枚举每个顶点
    k = first_edge[i];//k为顶点i的第一条边的编号
    while (k != -1) {
      printf("%d %d %d\n", u[k], v[k], w[k]);
      k = next_edge[k];//k为顶点i下一条边的编号
    }
  }
}
int main() {
  cin >> n >> m;//n个顶点m条边
  init();
  for (int i = 1;i <= m;++i) {
    cin >> u[i] >> v[i] >> w[i];//边u[i]到v[i]的权值为w[i];
    //关键
    next_edge[i] = first_edge[u[i]];//编号为i的边的下一条边
    first_edge[u[i]] = i;//顶点u[i]的第一条边编号为i
  }
  get_edge();
}
目录
相关文章
|
6月前
|
存储
邻接表详解
邻接表详解
38 0
|
6月前
|
存储 算法
有向图和无向图的表示方式(邻接矩阵,邻接表)
有向图和无向图的表示方式(邻接矩阵,邻接表)
210 0
|
存储 机器学习/深度学习 人工智能
图的存储及基本操作总结(邻接矩阵、邻接表)及C/C++代码实现
图的存储及基本操作总结(邻接矩阵、邻接表)及C/C++代码实现
1303 1
|
存储
图操作之邻接矩阵与邻接表的深度优先遍历
图操作之邻接矩阵与邻接表的深度优先遍历
177 0
拓扑排序(邻接表实现)
拓扑排序(邻接表实现)
183 0
拓扑排序(邻接表实现)
|
机器学习/深度学习
有向图,无向图的邻接矩阵和邻接表模板
有向图,无向图的邻接矩阵和邻接表模板
195 0
有向图,无向图的邻接矩阵和邻接表模板
|
算法
最小生成树:Kruskal算法(邻接表+最小堆+并查集)
最小生成树:Kruskal算法(邻接表+最小堆+并查集)
265 0
最小生成树:Kruskal算法(邻接表+最小堆+并查集)
邻接矩阵
数据结构中无向图邻接矩阵的存储
邻接矩阵
|
存储 JavaScript 算法
邻接表详解(C/C++)
目录 一、概念 二、分类 1)无向图的邻接表 2)有向图的邻接表(出弧) 3)有向图的逆邻接表(入弧) 三.步骤 四、代码
662 0
邻接表详解(C/C++)