深度優先搜索 (DFS)

從圖中的某頂點V出發,訪問此頂點,然後依次從V的各個未被訪問的鄰接點出發,深度優先搜索遍歷圖,如果發現不能到達目標解,就返回上一個節點,然後從另一條路開始走到底,直到圖中所有與V路徑想通的頂點都被訪問到,這種儘量往深處走的概念既是深度優先搜索。
簡略代碼:

const int MAXN=1000+10;
需使用的變量:
vector<int> g[MAXN];//存儲邊
bool visited[MAXN];//是否被訪問
void dfs(int x)
{
    visited[x]=true;
    //標記x被訪問
    for(int i=0;i<g[x].size();i++)
        if(!visited[i])//如果i點未被訪問則開始遍歷
            dfs(i);
    //遍歷x的相鄰結點,若沒被訪問則從這個結點開始深搜遍歷
} 
int main()
{
    for(int i=1;i<=MAXN;i++)
        g[i].clear();
    memset(visited,0,sizeof(visited));
    //初始化清空g和visited數組
    for(int i=1;i<=MAXN;i++)
        if(!visited[i])
            dfs(i);
    //多個圖深搜遍歷
} 
發佈了33 篇原創文章 · 獲贊 2 · 訪問量 7618
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章