std:list q;
STD :3360 vector visited (cols 1;
for(intI=1; i=cols; I ) visited[i]=false;
visited[x]=true;
if (! l[x].empty () )
{
for (STD : list :迭代器I=l [ x ].begin (; I!=l[x].end (; I )
{
q.push_back(x; q.push_back(*I;
() ) ) ) )。
while (! q.empty () )
{
y=q.back (; q.pop_back (;
x=q.back (; q.pop_back (;
if (! visited[y] )
{
visited[y]=true;
if (! l[y].empty () )
for (STD : list :迭代器I=l [ y ].begin (; I!=l[y].end (; I )
{
if (! visited[*i] )
{q.push_back(y; q.push_back(*I; () ) ) ) )。
() ) ) ) )。
DST[x].push_back(y;
if (标志!=0) dfst[y].push_back(x;
() ) ) ) )。
() ) ) ) )。
() ) ) ) )。
这是我的DFS算法,用于在图形中查找生成树。 需要将其转换为BFS算法,以找到两个顶点之间的最短路径。 我该怎么办? BFS算法和上面的算法有点相似吗? 还是需要从头开始写?
最后保存l-邻接表dfst-生成树的数组x-开始顶点y-辅助变量