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


#include
#include
#include
using namespace std;

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

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

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

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

    return 0;
}

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