@@ -44,28 +44,35 @@ exports.dup_t = dup_t;
44
44
/* js/src/001 undirected/offline/algo/eulerian/eventour.js */
45
45
46
46
47
- var eventour_t = function ( ) {
47
+ var eventour_t = function ( ) {
48
48
49
49
/**
50
- * @param graph g
51
- * @param vertices V
52
- * @param index i node from where to start the search
53
- * @param flag list done to label saturated edges
54
- * @param iterator list it that stores info on already processed edges
55
- * @param list tour the output tour vertex sequence
56
- * @param list edges the output tour edges
50
+ * @param {int } fjfj dkdj
51
+ * @param {graph } g
52
+ * @param {vertices } V
53
+ * @param {index } i node from where to start the search
54
+ * @param {flag list } done to label saturated edges
55
+ * @param {iterator list } it that stores info on already processed edges
56
+ * @param {list } tour the output tour vertex sequence
57
+ * @param {list } edges the output tour edges
57
58
*/
58
59
59
- var eventour = function ( g , V , i , done , it , tour , edges ) {
60
-
61
- var u , j , z = [ i , 0 ] ;
60
+ var eventour = function ( g , V , i , done , it , tour , edges ) {
62
61
63
- var r = [ ] ;
64
-
65
- while ( true ) {
62
+ var u , j , z , r , end ;
63
+
64
+ z = [ i , 0 ] ;
65
+
66
+ r = [ ] ;
67
+
68
+ while ( true ) {
69
+
70
+ while ( done [ z [ 0 ] ] ) {
71
+
72
+ if ( r . length === 0 ) {
73
+ return ;
74
+ }
66
75
67
- while ( done [ z [ 0 ] ] ) {
68
- if ( ! r . length ) return ;
69
76
z = r . pop ( ) ;
70
77
}
71
78
@@ -74,26 +81,38 @@ var eventour_t = function(){
74
81
u = V [ i ] ;
75
82
done [ i ] = true ;
76
83
77
- while ( true ) {
78
- var end = true ;
79
- it [ i ] = g . eitr ( u , function ( e , v ) {
80
- if ( e . free ) {
84
+ while ( true ) {
85
+
86
+ end = true ;
87
+
88
+ it [ i ] = g . eitr ( u , function ( e , v ) {
89
+
90
+ if ( e . free ) {
91
+
81
92
tour . splice ( j , 0 , i ) ;
82
93
edges . splice ( j , 0 , e ) ;
94
+
83
95
u = v ;
84
96
85
97
++ j ;
86
- if ( ! done [ u [ 0 ] ] ) r . push ( [ u [ 0 ] , j ] ) ;
98
+
99
+ if ( ! done [ u [ 0 ] ] ) {
100
+ r . push ( [ u [ 0 ] , j ] ) ;
101
+ }
87
102
88
103
e . free = false ;
89
104
end = false ;
90
105
i = u [ 0 ] ;
106
+
91
107
return true ;
108
+
92
109
}
93
- } , it [ i ] ) ;
94
110
95
- if ( end ) break ;
111
+ } , it [ i ] ) ;
96
112
113
+ if ( end ) {
114
+ break ;
115
+ }
97
116
98
117
}
99
118
}
@@ -104,6 +123,7 @@ var eventour_t = function(){
104
123
} ;
105
124
106
125
exports . eventour_t = eventour_t ;
126
+
107
127
/* js/src/001 undirected/offline/algo/eulerian/oddgraph.js */
108
128
109
129
0 commit comments