美文网首页
HDU - 2894 欧拉回路DFS

HDU - 2894 欧拉回路DFS

作者: _弓长_大人 | 来源:发表于2018-09-25 12:47 被阅读20次
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    #define MAX 1<<17
    bool vis[MAX];
    struct Node{
    int v,u,id;
    };
    Node node[MAX];
    int head[MAX];
    int cnt=0;
    int k;
    int top=0;
    void init()
    {
        memset(vis,0,sizeof(vis));
        memset(head,-1,sizeof(head));
        cnt=0;
        top=0;
    }
    void add_e(int u,int v,int id)
    {
        node[cnt].v=v;
        node[cnt].u=head[u];
        node[cnt].id=id;
        head[u]=cnt++;
    }
    int str[MAX];
    void dfs(int u)
    {
        for(int i=head[u];i!=-1;i=node[i].u)
        {
            if(!vis[node[i].id])
            {
                vis[node[i].id]=1;
                int temp=node[i].id&1;
                dfs(node[i].v);
                str[top++]=node[i].id;
            }
        }
    }
    int main()
    {
        while(~scanf("%d",&k))
        {
            init();
            int ans=1<<k;
            printf("%d ",ans);
            int len=1<<(k-1);
            for(int i=0;i<len;i++)
            {
                int id=i<<1|1,v=id%len;
                add_e(i,v,id);
                id=i<<1,v=id%len;
                add_e(i,v,id);
            }
            dfs(0);
            for(int i=top-1;i>=0;i--)
            {
                printf("%d",str[i]/len);
            }
             printf("\n");
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:HDU - 2894 欧拉回路DFS

          本文链接:https://www.haomeiwen.com/subject/ttjvrxtx.html