其他分享
首页 > 其他分享> > 图的存储、遍历(BFS、DFS)

图的存储、遍历(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