这道题明显是邻接表+dfs+bfs 于是我肝了一个DFS出来
void dfs(int d){
cout<<d<<" ";
for(unsigned long i=0;i<li[d].size();i++){
if(!u1[li[d][i]]){
u1[li[d][i]]=1;
dfs(li[d][i]);
}
}
}
然后是一个BFS
void bfs(int d){
//cout<<u1[5]<<endl;
queue<int>q;
q.push(d);
u1[d]=1;
while(!q.empty()){
int g=q.front();
q.pop();
cout<<g<<" ";
for(int i=0;i<li[g].size();i++){
if(!u1[li[g][i]]){
u1[li[g][i]]=1;
//cout<<li[d][i]<<" ";
q.push(li[g][i]);
//cout<<i<<" "<<li[d][i]<<endl;
}
}
//cout<<endl;
}
}
读入
int main(){
int a,b,u,v;
cin>>a>>b;
for(int i=0;i<b;i++){
cin>>u>>v;
li[u].push_back(v);
}
u1[1]=true;
dfs(1);
cout<<endl;
for(int i=0;i<=100005;i++)u1[i]=0;
bfs(1);
cout<<endl;
}
样例输出 1 2 5 6 3 7 8 4 1 2 3 4 5 6 7 8 我得意的交了上去 然后一片红...... 请求各位julao指出代码中有什么问题