图的存储、遍历(BFS、DFS)
作者:互联网
一、图的存储
1、邻接矩阵(二维数组)
int mp[N][N];
2、边缘列表(结构体)
tip:用的很少,适用于需要对边权排序的题目
struct Edge { int u,v; }g[N];
3、邻接表
1)vector数组(c++自带的,动态数组,没有边权或者图比较简单的时候比较好用)
vector <int> a;//动态数组a a.push_back(4); cout<<a[0]; cout<<a.size(); a.clear();//初始化 for (auto c:a) //遍历a数组 { cout<<c<<"\n"; } vector <int>g[N]; //比如说g[1]存的是一个数组 g[i].push_back(4);
2)链式前向星(常用)
数组模拟链表,头插法
int h[N],w[N],e[N],ne[N],idx; //N是边的取值范围 void add(int a,int b,int c) { e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++; } memset(h,-1,sizeof h);
标签:遍历,idx,int,边权,back,DFS,ne,BFS,数组 来源: https://www.cnblogs.com/Mercury1988/p/16056425.html