邻接矩阵
二维矩阵存储,是最直接的存图方式
int g[n][n];
邻接表
//将起点为"i "的链表清空
e[i].clear();
//增加顶点"i"到顶点"j"的边
e[i].push_back(j);
//查询以"i"为起点的第"j"条边
e[i][j];
//寻找权值为k的边
for (int j = 0; j < (int)e[i].size(); j++){
if (e[i][j] == k){
//do something
}
}
链式星
#define MAX_N 10000
int p[MAX_N];
int eid,x,vertex;
struct edge{
int u,v,w,next;
}e[MAX_N];
//插入单向边
void insert1(int u,int v,int w){
e[eid].u = u;
e[eid].v = v;
e[eid].w = w;
e[eid].next = p[u];
p[u] = eid++;
}
//插入双向边
void insert2(int u,int v,int w){
insert1(u,v,w);
insert1(v,u,w);
}
int main(){
//初始化顶点数组
memset(head, -1, sizeof(head));
//遍历从a出发的所有边
for (int i = head[a]; i != -1; i = edge[i].next){
}
}