DFS和用for_each替换

DFS and replacement with for_each

本文关键字:each 替换 for 和用 DFS      更新时间:2023-10-16

如何用for_each循环替换DFS()的for循环。请让我知道是否有其他有效的方法来创建图形或任何通过STL教授图形的网站,我基本上可以用于竞争性编程?

void DFS(int s)
{
  visited[s] = true;
  cout<<s<<"  n";
  for(vector<pair<int,int> >::iterator it=AdjList[s].begin();it!=AdjList[s].end();it++)
  {
    if(!visited[it->first])
    {
        //cout<<it->first<<endl;
        DFS(it->first);
        edgeTo[it->first]=s;
    }
  }
}

用于整个代码http://ideone.com/iXO9QO

DFS中的循环非常简单,所以我怀疑您是否需要使用for_each。供您参考,

vector<pair<int,int> >::iterator it=AdjList[s].begin();

可以只是

auto it=AdjList[s].begin();

使用auto关键字将大大减少代码的数量。

就我个人而言,我已经用STL实现了所有主要的图算法。看到你的代码,我认为你已经走上了竞争性编程的正确道路。虽然boost提供了各种现成的库,但STL足以实现图形算法。