zoukankan      html  css  js  c++  java
  • 1341:【例题】一笔画问题

    【题目描述】

    如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。

    根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行dfs,时间复杂度为O(m+n),m为边数,n是点数。

    【输入】

    第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。

    【输出】

    欧拉路或欧拉回路,输出一条路径即可。

    【输入样例】

    5 5
    1 2
    2 3
    3 4
    4 5
    5 1

    【输出样例】

    1 5 4 3 2 1


    欧拉路度数是奇数时是起点(或终点)。
    欧拉回路时任何路都可以


     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define N 10000+1
     4 int w[N][N],du[N],n,m,ans[N],tot;
     5 void dfs(int x)
     6 {
     7     for(int i=1;i<=n;i++)
     8         if(w[x][i])
     9         {
    10             w[x][i]=w[i][x]=0;
    11             dfs(i);
    12             break;
    13         }
    14     ans[++tot]=x;
    15 }
    16 int main()
    17 {
    18     cin>>n>>m;
    19     for(int i=1;i<=m;i++)
    20     {
    21         int x,y;
    22         cin>>x>>y;
    23         w[x][y]=1;
    24         w[y][x]=1;
    25         du[x]++;
    26         du[y]++;
    27     }
    28     int sta=1;
    29     for(int i=1;i<=n;i++)
    30         if(du[i]%2==1){
    31             sta=i;
    32             break;
    33         }
    34     dfs(sta);
    35     for(int i=1;i<=tot;i++)
    36         cout<<ans[i]<<" ";
    37     cout<<endl;
    38 }
  • 相关阅读:
    Java web 例4-7
    JavaScript初步+基本函数
    请求转发和重定向区别
    javaben的设计规则
    Java web 实验五 Servlet过滤器
    关于软件生命周期以及软件过程
    Java web outTime.jsp
    Java web 4-6 update_stu_1.jps
    include指令与动作,请求妆发等同于forward动作
    简单的购物车应用案例 相关代码2
  • 原文地址:https://www.cnblogs.com/jzxnl/p/11391122.html
Copyright © 2011-2022 走看看