@@ -73,6 +73,7 @@ func newEdges(n int, e EdgeSet) *Virtual {
7373 case n == 1 :
7474 return singleton ()
7575 }
76+
7677 var noCost bool
7778 if e .Cost == nil {
7879 noCost = true
@@ -83,12 +84,12 @@ func newEdges(n int, e EdgeSet) *Virtual {
8384 noFilter = true
8485 e .Keep = alwaysEdge
8586 }
87+
8688 from := e .From .And (Range (0 , n ))
8789 to := e .To .And (Range (0 , n ))
8890 if from .size () == 0 || to .size () == 0 {
8991 return Empty (n )
9092 }
91-
9293 res := generic (n , e .Cost , func (v , w int ) (edge bool ) {
9394 return e .Contains (v , w )
9495 })
@@ -104,13 +105,15 @@ func newEdges(n int, e EdgeSet) *Virtual {
104105 return to .size ()
105106 case to .Contains (v ):
106107 return from .size ()
108+ default :
109+ return
107110 }
108- return
109111 }
110112 }
111113
112114 visit := func (v int , a int , do func (w int , c int64 ) bool ) (aborted bool ) {
113- if intersect .Contains (v ) {
115+ switch {
116+ case intersect .Contains (v ):
114117 for _ , in := range union .And (Range (a , n )).set {
115118 for w := in .a ; w < in .b ; w ++ {
116119 if v != w && e .Keep (v , w ) && do (w , e .Cost (v , w )) {
@@ -119,8 +122,7 @@ func newEdges(n int, e EdgeSet) *Virtual {
119122 }
120123 }
121124 return
122- }
123- if from .Contains (v ) {
125+ case from .Contains (v ):
124126 for _ , in := range to .And (Range (a , n )).set {
125127 for w := in .a ; w < in .b ; w ++ {
126128 if e .Keep (v , w ) && do (w , e .Cost (v , w )) {
@@ -129,8 +131,7 @@ func newEdges(n int, e EdgeSet) *Virtual {
129131 }
130132 }
131133 return
132- }
133- if to .Contains (v ) {
134+ case to .Contains (v ):
134135 for _ , in := range from .And (Range (a , n )).set {
135136 for w := in .a ; w < in .b ; w ++ {
136137 if e .Keep (v , w ) && do (w , e .Cost (v , w )) {
@@ -139,12 +140,14 @@ func newEdges(n int, e EdgeSet) *Virtual {
139140 }
140141 }
141142 return
143+ default :
144+ return
142145 }
143- return
144146 }
145147
146148 visit0 := func (v int , a int , do func (w int , c int64 ) bool ) (aborted bool ) {
147- if intersect .Contains (v ) {
149+ switch {
150+ case intersect .Contains (v ):
148151 for _ , in := range union .And (Range (a , n )).set {
149152 for w := in .a ; w < in .b ; w ++ {
150153 if v != w && e .Keep (v , w ) && do (w , 0 ) {
@@ -153,8 +156,7 @@ func newEdges(n int, e EdgeSet) *Virtual {
153156 }
154157 }
155158 return
156- }
157- if from .Contains (v ) {
159+ case from .Contains (v ):
158160 for _ , in := range to .And (Range (a , n )).set {
159161 for w := in .a ; w < in .b ; w ++ {
160162 if e .Keep (v , w ) && do (w , 0 ) {
@@ -163,8 +165,7 @@ func newEdges(n int, e EdgeSet) *Virtual {
163165 }
164166 }
165167 return
166- }
167- if to .Contains (v ) {
168+ case to .Contains (v ):
168169 for _ , in := range from .And (Range (a , n )).set {
169170 for w := in .a ; w < in .b ; w ++ {
170171 if e .Keep (v , w ) && do (w , 0 ) {
@@ -173,8 +174,9 @@ func newEdges(n int, e EdgeSet) *Virtual {
173174 }
174175 }
175176 return
177+ default :
178+ return
176179 }
177- return
178180 }
179181
180182 if noCost {
0 commit comments