@@ -68,15 +68,15 @@ where
6868 }
6969
7070 /// Returns (maximum flow, cost)
71- pub fn flow ( & mut self , s : usize , t : usize , flow_limit : T ) -> ( T , T ) {
72- self . slope ( s , t , flow_limit) . last ( ) . unwrap ( ) . clone ( )
71+ pub fn flow ( & mut self , source : usize , sink : usize , flow_limit : T ) -> ( T , T ) {
72+ * self . slope ( source , sink , flow_limit) . last ( ) . unwrap ( )
7373 }
7474
75- pub fn slope ( & mut self , s : usize , t : usize , flow_limit : T ) -> Vec < ( T , T ) > {
75+ pub fn slope ( & mut self , source : usize , sink : usize , flow_limit : T ) -> Vec < ( T , T ) > {
7676 let n = self . g . len ( ) ;
77- assert ! ( s < n) ;
78- assert ! ( t < n) ;
79- assert_ne ! ( s , t ) ;
77+ assert ! ( source < n) ;
78+ assert ! ( sink < n) ;
79+ assert_ne ! ( source , sink ) ;
8080
8181 let mut dual = vec ! [ T :: zero( ) ; n] ;
8282 let mut prev_v = vec ! [ 0 ; n] ;
@@ -86,26 +86,26 @@ where
8686 let mut prev_cost: Option < T > = None ;
8787 let mut result = vec ! [ ( flow, cost) ] ;
8888 while flow < flow_limit {
89- if !self . dual_ref ( s , t , & mut dual, & mut prev_v, & mut prev_e) {
89+ if !self . dual_ref ( source , sink , & mut dual, & mut prev_v, & mut prev_e) {
9090 break ;
9191 }
9292 let mut c = flow_limit - flow;
9393
94- let mut v = t ;
95- while v != s {
94+ let mut v = sink ;
95+ while v != source {
9696 c = std:: cmp:: min ( c, self . g [ prev_v[ v] ] [ prev_e[ v] ] . cap ) ;
9797 v = prev_v[ v] ;
9898 }
9999
100- let mut v = t ;
101- while v != s {
100+ let mut v = sink ;
101+ while v != source {
102102 self . g [ prev_v[ v] ] [ prev_e[ v] ] . cap -= c;
103103 let rev = self . g [ prev_v[ v] ] [ prev_e[ v] ] . rev ;
104104 self . g [ v] [ rev] . cap += c;
105105 v = prev_v[ v] ;
106106 }
107107
108- let d = -dual[ s ] ;
108+ let d = -dual[ source ] ;
109109 flow += c;
110110 cost += d * c;
111111 if prev_cost == Some ( d) {
@@ -119,8 +119,8 @@ where
119119
120120 fn dual_ref (
121121 & self ,
122- s : usize ,
123- t : usize ,
122+ source : usize ,
123+ sink : usize ,
124124 dual : & mut [ T ] ,
125125 pv : & mut [ usize ] ,
126126 pe : & mut [ usize ] ,
@@ -130,14 +130,14 @@ where
130130 let mut vis = vec ! [ false ; n] ;
131131
132132 let mut que = std:: collections:: BinaryHeap :: new ( ) ;
133- dist[ s ] = T :: zero ( ) ;
134- que. push ( ( std:: cmp:: Reverse ( T :: zero ( ) ) , s ) ) ;
133+ dist[ source ] = T :: zero ( ) ;
134+ que. push ( ( std:: cmp:: Reverse ( T :: zero ( ) ) , source ) ) ;
135135 while let Some ( ( _, v) ) = que. pop ( ) {
136136 if vis[ v] {
137137 continue ;
138138 }
139139 vis[ v] = true ;
140- if v == t {
140+ if v == sink {
141141 break ;
142142 }
143143
@@ -156,15 +156,15 @@ where
156156 }
157157 }
158158
159- if !vis[ t ] {
159+ if !vis[ sink ] {
160160 return false ;
161161 }
162162
163163 for v in 0 ..n {
164164 if !vis[ v] {
165165 continue ;
166166 }
167- dual[ v] = dual [ v ] - ( dist[ t ] - dist[ v] ) ;
167+ dual[ v] -= dist[ sink ] - dist[ v] ;
168168 }
169169 true
170170 }
0 commit comments