邻接表

简介: 笔记

邻接表的数组实现

#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();
}
目录
相关文章
|
9天前
|
存储 人工智能 算法
Java数据结构与算法:邻接矩阵和邻接表
Java数据结构与算法:邻接矩阵和邻接表
|
1月前
|
存储
邻接表详解
邻接表详解
16 0
|
1月前
|
存储 算法
有向图和无向图的表示方式(邻接矩阵,邻接表)
有向图和无向图的表示方式(邻接矩阵,邻接表)
79 0
|
7月前
|
存储 机器学习/深度学习 人工智能
图的存储及基本操作总结(邻接矩阵、邻接表)及C/C++代码实现
图的存储及基本操作总结(邻接矩阵、邻接表)及C/C++代码实现
1073 0
|
11月前
|
存储
图操作之邻接矩阵与邻接表的深度优先遍历
图操作之邻接矩阵与邻接表的深度优先遍历
131 0
拓扑排序(邻接表实现)
拓扑排序(邻接表实现)
148 0
拓扑排序(邻接表实现)
|
机器学习/深度学习
有向图,无向图的邻接矩阵和邻接表模板
有向图,无向图的邻接矩阵和邻接表模板
160 0
有向图,无向图的邻接矩阵和邻接表模板
|
算法
最小生成树:Kruskal算法(邻接表+最小堆+并查集)
最小生成树:Kruskal算法(邻接表+最小堆+并查集)
224 0
最小生成树:Kruskal算法(邻接表+最小堆+并查集)
邻接矩阵
数据结构中无向图邻接矩阵的存储
邻接矩阵