https://www.luogu.com.cn/problem/P5318
题意
分析
由于输出的时候是按序号大小的先后进行输出,因此考虑用vector存图,进行排序。然后就是bfs+dfs。
代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
typedef long long ll;
vector<int>e[N];
int v[N];
int n,m;
void add(int a,int b){
e[a].push_back(b);
}
void dfs(int x){
cout<<x<<" ";
v[x]=1;
for(int i=0;i<e[x].size();i++){
int j=e[x][i];
if(!v[j]){
dfs(j);
}
}
}
void bfs(int x){
cout<<endl;
memset(v,0,sizeof v);
queue<int>q;
q.push(x);
v[x]=1;
cout<<x<<" ";
while(!q.empty()){
int t=q.front();
q.pop();
for(int i=0;i<e[t].size();i++){
if(!v[e[t][i]]){
q.push(e[t][i]);
cout<<e[t][i]<<" ";
v[e[t][i]]=1;
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
add(a,b);
}
for(int i=1;i<=n;i++){
sort(e[i].begin(),e[i].end());
}
dfs(1);
bfs(1);
}