• 可行遍性——欧拉图and哈密顿图


    可行遍性——欧拉图and哈密顿图

    1.欧拉回路

      欧拉回路:图G的一个回路,若他恰巧通过G中每条边一次,则称该回路为欧拉回路。欧拉回路就是就是从图上一点出发,经过所有的边且只经过一次,最终回到起点的路径。

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<cmath>
     6 #include<map>
     7 using namespace std;
     8 const int maxv= 110;
     9 const int maxe= 5010;  //可能的最大值
    10 
    11 struct ENode
    12 {
    13     int to;
    14     int Next;
    15 };
    16 ENode edegs[maxe];
    17 int Head[maxv], tnt;
    18 void init()
    19 {
    20     memset(Head, -1, sizeof(Head));
    21     tnt= -1;
    22 }
    23 void Add_ENode (int a, int b)
    24 {
    25     ++ tnt;
    26     edegs[tnt].to= b;
    27     edegs[tnt].Next= Head[a];
    28     Head[a]= tnt;
    29     ++ tnt;
    30     edegs[tnt].to= a;
    31     edegs[tnt].Next= Head[b];
    32     Head[b]= tnt;
    33 }
    34 
    35 int oLaData[maxe];
    36 int oLa_cnt;
    37 bool visit[maxe];
    38 void oLa_dfs(int u)
    39 {
    40     for (int k= Head[u]; k!= -1; k= edegs[k].Next)
    41     {
    42         if (! visit[k])
    43         {
    44             visit[k]= 1;   //标记当前边已走过
    45             visit[k^ 1]= 1;  
    46             oLa_dfs(edegs[k].to);  
    47             oLaData[oLa_cnt ++]= k;  //回溯过程中记录边
    48         }
    49     }
    50 }
    51 
    52 int main()
    53 {
    54     int n;
    55     /*建图*/
    56     /*判断欧拉回路是否存在*/
    57     oLa_dfs(1);
    58     return 0;
    59 }
    View Code
  • 相关阅读:
    类加载
    jquery框架概览(二)
    jquery框架概览(一)
    Angular开发者指南(七)依赖注入
    Angular开发者指南(六)作用域
    Angular开发者指南(五)服务
    Angular开发者指南(四)控制器
    Angular开发者指南(三)数据绑定
    Angular开发者指南(二)概念概述
    Angular开发者指南(一)入门介绍
  • 原文地址:https://www.cnblogs.com/Amaris-diana/p/11279028.html
Copyright © 2020-2023  润新知