用一个vector来取代相邻节点迭代器
来源:7-3 相邻结点迭代器
慕设计8024997
2020-03-04
bobo老师好,是不是可以用一个vector来存储节点的相邻节点的index,从而不实用迭代器,因为迭代器概念不是很熟。
// DesenGraph.h
vector<int> adjInfo( int v ) {
assert( v >= 0 && v < n) ;
vector<int> res = vector<int>();
for ( int i = 0; i < g[v].size(); i++ )
if (g[v][i])
res.push_back(i);
return res;
}
// SparseGraph.h
vector<int> adjInfo( int v ) {
assert( v >= 0 && v < n );
vector<int> res = vector<int>();
for( int i = 0; i < g[v].size(); i++)
res.push_back(g[v][i]);
return res;
}
相应的BFS的修改
void dfs( int v ) {
visited[v] = true;
vector<int> adjInfo = G.adjInfo(v);
for( int i = 0; i < adjInfo.size(); i ++ )
if( !visited[adjInfo[i]])
dfs(adjInfo[i]);
}
写回答
2回答
-
lobby
2022-04-29
会多一次vector的copy啊小伙子。
00 -
liuyubobobo
2020-03-04
可以的:)
其实很多时候,对于图论算法来说,不封装图这个类也是可以的:)
继续加油!:)
00
相似问题