私はDFS
それが私の頭の中にあるようにコーディングし、アイデアのために教科書や擬似コードを参照しませんでした。不要な計算を行っているコード行がいくつかあると思います。アルゴリズムの複雑さを軽減するためのアイデアはありますか?
vector<int>visited;
bool isFound(vector<int>vec,int value)
{
if(std::find(vec.begin(),vec.end(),value)==vec.end())
return false;
else
return true;
}
void dfs(int **graph,int numOfNodes,int node)
{
if(isFound(visited,node)==false)
visited.push_back(node);
vector<int>neighbours;
for(int i=0;i<numOfNodes;i++)
if(graph[node][i]==1)
neighbours.push_back(i);
for(int i=0;i<neighbours.size();i++)
if(isFound(visited,neighbours[i])==false)
dfs(graph,numOfNodes,neighbours[i]);
}
void depthFirstSearch(int **graph,int numOfNodes)
{
for(int i=0;i<numOfNodes;i++)
dfs(graph,numOfNodes,i);
}
PS: 誰かが私にC++コードを高品質で挿入する方法を教えてくれるリンクを送ってくれませんか。構文の強調表示を試しましたが、うまくいきませんでした。