花果山猿猴队长 2022-07-27 21:06 采纳率: 81.3%
浏览 8
已结题

关于邻接表存储结构的图的dfs搜索的问题


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

//建立表头结点表 
vector<int> adjacency[20000];
int book[20000];

void dfs(int cur){
    
    cout<<cur<<" ";
    book[cur]=1;

    //遍历链表中的结点 
    int length=adjacency[cur].size();
    for(int i=0;i<length;i++){
        if(book[adjacency[cur][i]]==0){
            dfs(adjacency[cur][i]);
        }
    }
}

int main(){
    int vertex,edge,vertex1,vertex2;
    cin>>vertex>>edge;
    
    //输入边 
    for(int i=0;i<edge;i++){
        cin>>vertex1>>vertex2;
        adjacency[vertex1].push_back(vertex2);
    }
    
    //给邻接表的每个链表的结点排序 
    for(int i=0;i<vertex;i++){
        sort(adjacency[i].begin(),adjacency[i].end());
    }
    
    //遍历每个结点 
    for(int i=0;i<vertex;i++){
        if(book[i]==0){
        dfs(i);    
        }
    }

    return 0;
}

对于上面的邻接表对图的dfs代码
创建图的时候这一步 adjacency[vertex1].push_back(vertex2);
为什么下面不用再加 adjacency[vertex2].push_back(vertex1); 呢?
加了就会有一个测试案例不通过

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月4日
    • 创建了问题 7月27日