zoukankan      html  css  js  c++  java
  • 深搜的非递归写法

    #include"stdio.h"
    #include"string.h"
    #include"queue"
    #include"stack"
    #include"iostream"
    #include"string"
    #include"map"
    #include"stdlib.h"
    #define inf 99999999
    #define M 1000009
    using namespace std;
    struct st
    {
        int u,v,w,next;
    }edge[M];
    int t,head[M],use[M],s[M],cnt,Stack[M],top,num;
    struct node
    {
        int u,id;
    }p[M];
    void init()
    {
        t=0;
        memset(head,-1,sizeof(head));
    }
    void add(int u,int v)
    {
        edge[t].u=u;
        edge[t].v=v;
        edge[t].next=head[u];
        head[u]=t++;
    }
    /*void DFS(int u)
    {
        use[u]=1;
        printf("%d ",u);
        for(int i=head[u];i!=-1;i=edge[i].next)
        {
            int v=edge[i].v;
            if(!use[v])
                DFS(v);
        }
    }*/
    void DFS(int u)
    {
        int i;
        top=0;
        memset(use,0,sizeof(use));
        Stack[++top]=u;
        use[u]=1;
        while(top)
        {
            int u=Stack[top];
            for(i=head[u];i!=-1;i=edge[i].next)
            {
                int v=edge[i].v;
                if(!use[v])
                {
                    use[v]=1;
                    Stack[++top]=v;
                    break;
                }
            }
            if(i==-1)
            {
                printf("%d ",Stack[top]);
                top--;
            }


        }
    }
    void dfs(int u)
    {
        use[u]=1;
        for(int i=head[u];i!=-1;i=edge[i].next)
        {
            int v=edge[i].v;
            if(!use[v])
            {
                dfs(v);


            }
        }
        printf("%d ",u);
    }
    int main()
    {
        int n,m,i;
        while(scanf("%d%d",&n,&m)!=-1)
        {
            init();
            while(m--)
            {
                int a,b;
                scanf("%d%d",&a,&b);
                add(a,b);
                add(b,a);
            }
            DFS(1);
            printf(" ");
            memset(use,0,sizeof(use));
            dfs(1);
            printf(" ");
        }
    }
  • 相关阅读:
    第二阶段冲刺之站立会议5
    第二阶段冲刺之站立会议4
    第二阶段冲刺之站立会议3
    “加减乘除”使用说明
    第二阶段冲刺之站立会议2
    Kali学得好,监狱蹲到老,最新版Kali 2020
    【Linux】Centos7密码登录失败锁定设置_20200313
    【Linux】如何设置Linux开机 ,默认进入图形界面或命令行界面?
    【Linux】使用 PXE+Kickstart 无人值守批量安装系统
    【Linux】Linux修改openfile和max user processes?
  • 原文地址:https://www.cnblogs.com/mypsq/p/4348212.html
Copyright © 2011-2022 走看看