手记

DFS序,欧拉序


#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);

        }

    }

}

©著作权归作者所有:来自51CTO博客作者qinXpeng的原创作品,如需转载,请注明出处,否则将追究法律责任


0人推荐
随时随地看视频
慕课网APP