DFS序
e数组建图(树),st[i]代表i入栈时间,en[i]代表i出栈时间,ti代表时间
例题
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,dfsx[N],st[N],en[N],ti;
vector<int>e[N];
inline void dfs(int u,int fa){
st[u]=++ti;
dfsx[ti]=u;
for(auto i : e[u]){
if (i!=fa){
dfs(i,u);
}
}
en[u]=ti;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<n;i++){
int from,to;
cin>>from>>to;
e[from].push_back(to);
e[to].push_back(from);
}
for(int i=1;i<=n;i++){
sort(e[i].begin(),e[i].end());
}
dfs(1,0);
for(int i=1;i<=n;i++){
cout<<dfsx[i];//输出dfs序
}
cout<<"\n";
for(int i=1;i<=n;i++){
cout<<st[i];//输出入栈时间
}
cout<<"\n";
for(int i=1;i<=n;i++){
cout<<en[i];//输出出栈时间
}
return 0;
}

浙公网安备 33010602011771号