从邻接列表到边列表的快速转换

问题描述 投票:0回答:2

我有一个使用邻接列表实现的无向加权图,我需要将其转换为边列表。问题是,对于每条边

(A, B)
,我在邻接列表中有两个条目:一个表示从 A 到 B 的边,另一个表示从 A 到 B 的边。因此,在将其转换为边列表时,我需要部分搜索整个完成边缘列表以防止重复。

有什么办法可以让它更快/更简单吗?我需要保留邻接列表,因为我的检测图中循环的算法依赖于它。

algorithm data-structures graph
2个回答
2
投票

枚举顶点仅将边添加到列表中

(u, v)
,这样
u <= v


0
投票
//you are given an adjacency matrix adj[]
//you are making an edge list from that matrix 

int n=V;//the no. of vertices
        vector<pair<int,int>>edgeList;
      for(int i=0;i<n;i++)
      {
          for(int child:adj[i])
          {
              if(child>i)
              edgeList.push_back({i,child});
          }
      }
© www.soinside.com 2019 - 2024. All rights reserved.