時代の実現可能性 - オイラーとハミルトニアン
1.オイラー
オイラーサイクル:Gは、彼がGを通じて一度エッジを発生した場合、回路をオイラーと呼ばれ、回路図です。オイラーは、出発点は、結局、図からであり、一方の側のみの後、最終的にパスの始点に戻されます。
1つの#include <アルゴリズム> 2の#include <iostreamの> 3の#include <CStringの> 4の#include <cstdioを> 5の#include <cmath> 6の#include <地図> 7 使って 名前空間STD。 8 CONST INT MAXV = 110 。 9 のconst int型 MAXE = 5010。 // 可能的最大值 10 11 構造体のeNode 12 { 13 INT に、 14 INT 次。 15 }。 16 eノードedegs [MAXE]。 17 int型ヘッド[MAXV]、TNT。 18 ボイドのinit() 19 { 20 のmemset(ヘッド、 - 1、はsizeof (ヘッド))。 21 TNT = - 1 。 22 } 23 空隙 Add_ENode(INT A、INT B) 24 { 25 ++ TNT。 26 edegs [TNT] .TO = B。 27 edegs [TNT] .Next = ヘッド[A]。 28 ヘッド[A] = TNT。 29 ++ TNT。 30 edegs [TNT] .TO = 。 31 edegs [TNT] .Next = ヘッド[B]。 32 ヘッド[B] = TNT。 33 } 34 35 INT oLaData [MAXE]。 36 INT oLa_cnt。 37 ブール訪問[MAXE]。 38 ボイド oLa_dfs(INT U) 39 { 40 のための(int型 K =ヘッド[U];!K = - 1 ; K = edegs [K] .Next) 41 { 42 であれば(![k]を訪問) 43 { 44 訪問[K] = 1 ; // タグが現在のエッジを経た 45 訪問[K ^ 1 ] = 1 ; 46である (edegs [K] .TO)oLa_dfs; 47 oLaData [oLa_cnt ++] = K; // 後戻り工程記録面 48 } 49 } 50 } 51が 52であり 、INT ()主 53は 、{ 54は、 INT ; N- 55 / * 内蔵図* / 56 / * オイラーがあるか否かを判断する* / 57である oLa_dfs(1 ); 58 リターン 0 ; 59 }