边集数组

定义一个集合,这个的枚举来定义图中一个节点的三个元素
- 起点
- 终点
- 边权
这个集合是边集数组图中的每一个边由每一个 来组合出来
IMPORTANT
边集数组的
是图中的每一条边
边集数组的复杂度
- 时间复杂度:
- 空间复杂度:
边集数组的使用场景
需要将边按照边权来进行使用的时候,比如在kruskal算法里面,要按照边的权重为判断指标来做决策
边集数组的实现
建图
定义集合e
struct edge{
int u,v,w;
}e[N];int main() {
cin >> n >> m;
for(int i = 1; i<=m; i++) {
cin >> a >> b >> c; //a是起点,b是终点,c是边权
e[i] = {a,b,c};
}
dfs(1) //自己决定起点
}遍历
void dfs(int u) { //起点编号1
vis[u] = true; //来过了1
for(int i = 1; i<=m; i++) {
if(e[i].u==u){//第1条边的起点,是不是点1,如果不是,找到起点是1是这个边,操作这个边
int v=e[i].v, w=e[i].w; //取出这条边的权重和终点
cout << u << v << w; //当前的点线关系
//如果这个边的终点,已经去过了
if(vis[v]) continue; //我们就不去了
dfs(e[i].v) //否则我们去到终点为起点的边
}
}
}