我有一个使用邻接列表实现的无向加权图,我需要将其转换为边列表。问题是,对于每条边
(A, B)
,我在邻接列表中有两个条目:一个表示从 A 到 B 的边,另一个表示从 A 到 B 的边。因此,在将其转换为边列表时,我需要部分搜索整个完成边缘列表以防止重复。
有什么办法可以让它更快/更简单吗?我需要保留邻接列表,因为我的检测图中循环的算法依赖于它。
枚举顶点仅将边添加到列表中
(u, v)
,这样u <= v
。
//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});
}
}