建图(图的存储结构)

图可以看作一般化的树

建图(图的存储结构)

以存点方式存储图

邻接矩阵(适用于稠密图)

vector<vector<int>>v(MAX,vector<int>(MAX,0));

邻接表

unordered_map<int,vector<int>> head;

以存边方式存储图

链式前向星(静态链表版邻接表,常用)

前向星:指的是存储节点的出度边,其形状类似一个星星。

//以DAG带权图为例
int cnt=0;//cnt:当前边序号工作指针,初始化为0
struct vertex{//点集
    int in,out;//入度,出度
    int e=-1;//edge:存储该点最后一条出度边的序号,默认设置-1为结束标志
}v[MAXV];
struct edge{//边集
    int u,v,w;//from,to,weight
    int n=-1;//next:存储上一条同为该点出度边的序号,默认设置-1为结束标志
}e[MAXE];//DAG中MAXE为MAXV的2倍
void add(int U,int V,int W){//加边操作
    e[cnt].u=U,e[cnt].v=V,e[cnt].w=W;
    v[U].out++,v[V].in++;
    e[cnt].n=v[U].e;//连接上一条边,与头插法先连接首元结点等价 以-1为结束标志
    v[U].e=cnt++;//更新点集数组,与头插法更新头指针等价
}
posted @ 2024-05-08 20:14  椰萝Yerosius  阅读(25)  评论(0)    收藏  举报  来源