DFS序,欧拉序

2023-06-28,,

#include<bits/stdc++.h>
using namespace std;
using ll=long long ;
using ull=unsigned long long ;
#define me(a) memset(a,0,sizeof(a));
const int N=10005;
vector<int>g[N];
int num[N],dis[N],len,t;
int s[N],e[N];
int euler[N];
// void dfs(int u,int x,int pos) // dfs序 时间戳
// {
//  num[++len]=u;
//        int d=len;
//  s[len]=++t;
//  dis[u]=pos;
//  for(int i:g[u])
//  {
//      if(i!=x)
//      {
//          dfs(i,u,pos+1);
//      }
//  }e[d]=t;
// }
void dfs(int u,int fa)// 欧拉序
{
    euler[++len]=u;
    for(int i:g[u])
    {
        if(i!=fa)
        {
            dfs(i,u);
            //euler[++len]=u;//欧拉序1 
        }
    } //euler[++len]=u;//欧拉序2 
}
int main()
{
    int n,x;while(cin>>n>>x)
    {
        for(int i=0;i<N;i++)g[i].clear();
        len=0,t=0;me(num);me(dis);me(s);me(e);me(euler);
        for(int i=1,u,v;i^n;i++)
        {
            cin>>u>>v;
            g[u].push_back(v);
            g[v].push_back(u);
        }
    }
}

《DFS序,欧拉序.doc》

下载本文的Word格式文档,以方便收藏与打印。