zoukankan      html  css  js  c++  java
  • 图的遍历

    感觉自己好久不做这类题,脑子都有点抽了!

    这里放一道很有意思的题:

    链接戳这里☞

    一笔画问题

    下面是代码和详细注释:有兴趣的可以看一下!

        #include<cstdio>
        #include<cstring>
        #include<cstdlib>
        using namespace std;
        bool mp[1505][1505];//存边 
        int m,n,step[1505],num[1505],right;//分别是n:点个数;m:边个数;step:步数; num:记录存边时每一个点的已存边数; 
        //right:记录起始偶点; 
        bool judge();//判定奇偶点个数函数 
        void dfs(int v,int st,int begin)//对边进行深度搜索 v:当前点位置;st:步数;begin:起点 
        {
            if(st==m)// 如果步数和边数一样了! 输出答案! 
            {
                printf("%d",begin);
                for(int i=0;i<st;++i)
                {
                    printf(" %d",step[i]);
                }
                exit(0);//退出程序,在cstdlib中 
            }
            for(int i=1;i<=n;++i)
            {
                if(mp[v][i])//若有边没有被走过 
                {
                    mp[v][i]=false;//走过这条边 
                    mp[i][v]=false;//同上 
                    step[st]=i;//进行标记走过的点 
                    dfs(i,st+1,begin);
                    mp[v][i]=true;//如果退回,则取消标记走过这条边 
                    mp[i][v]=true;//同上 
                }
            }
        }
        int main()
        {
            scanf("%d%d",&n,&m);//n point m line
            int a,b;
            for(int i=1;i<=m;++i)//读入 
            {
                scanf("%d%d",&a,&b);
                mp[a][b]=true; 
                num[a]++;//☣
                mp[b][a]=true;
                num[b]++;
            }
            if(judge())
            {
                dfs(right,0,right);
            }
            else
            dfs(1,0,1);//若没有奇点,则直接从1点开始遍历! 
        }
        bool judge()//判断有无奇偶点,进行起点选择! 
        {
            int left=0;
            for(int i=1;i<=n;++i)
            {
                if(num[i]%2==1)
                {
                    right=i;
                    left++;
                }
            }
            if(left==2)
            return true;
            else
            return false;
    }
    
  • 相关阅读:
    springboot2.1.3使用jdbcTemplate
    httpclient4.5.2 Post请求支持http和https
    springboot2.1.3+spring-session2.1.4分库处理
    mysql查看当前实时连接数
    springboot2.1.3+Junit4 单元测试
    subprocess.Popen()详解
    matplotlib 设置图形大小时 figsize 与 dpi 的关系
    matplotlib之subplot
    matplotlib.pyplot.plot()参数详解
    plt.rcParams属性总结
  • 原文地址:https://www.cnblogs.com/mudrobot/p/13328902.html
Copyright © 2011-2022 走看看