@@ -17,7 +17,7 @@ use std::collections::VecDeque;
17
17
18
18
const V : usize = 6 ; // Number of vertices in graph
19
19
20
- pub fn bfs ( r_graph : & mut [ Vec < i32 > ] , s : usize , t : usize , parent : & mut [ i32 ] ) -> bool {
20
+ pub fn bfs ( r_graph : & [ Vec < i32 > ] , s : usize , t : usize , parent : & mut [ i32 ] ) -> bool {
21
21
let mut visited = [ false ; V ] ;
22
22
visited[ s] = true ;
23
23
parent[ s] = -1 ;
@@ -41,12 +41,12 @@ pub fn bfs(r_graph: &mut [Vec<i32>], s: usize, t: usize, parent: &mut [i32]) ->
41
41
false
42
42
}
43
43
44
- pub fn ford_fulkerson ( graph : & mut [ Vec < i32 > ] , s : usize , t : usize ) -> i32 {
44
+ pub fn ford_fulkerson ( graph : & [ Vec < i32 > ] , s : usize , t : usize ) -> i32 {
45
45
let mut r_graph = graph. to_owned ( ) ;
46
46
let mut parent = vec ! [ -1 ; V ] ;
47
47
let mut max_flow = 0 ;
48
48
49
- while bfs ( & mut r_graph, s, t, & mut parent) {
49
+ while bfs ( & r_graph, s, t, & mut parent) {
50
50
let mut path_flow = i32:: MAX ;
51
51
let mut v = t;
52
52
@@ -76,66 +76,66 @@ mod tests {
76
76
77
77
#[ test]
78
78
fn test_example_1 ( ) {
79
- let mut graph = vec ! [
79
+ let graph = vec ! [
80
80
vec![ 0 , 12 , 0 , 13 , 0 , 0 ] ,
81
81
vec![ 0 , 0 , 10 , 0 , 0 , 0 ] ,
82
82
vec![ 0 , 0 , 0 , 13 , 3 , 15 ] ,
83
83
vec![ 0 , 0 , 7 , 0 , 15 , 0 ] ,
84
84
vec![ 0 , 0 , 6 , 0 , 0 , 17 ] ,
85
85
vec![ 0 , 0 , 0 , 0 , 0 , 0 ] ,
86
86
] ;
87
- assert_eq ! ( ford_fulkerson( & mut graph, 0 , 5 ) , 23 ) ;
87
+ assert_eq ! ( ford_fulkerson( & graph, 0 , 5 ) , 23 ) ;
88
88
}
89
89
90
90
#[ test]
91
91
fn test_example_2 ( ) {
92
- let mut graph = vec ! [
92
+ let graph = vec ! [
93
93
vec![ 0 , 4 , 0 , 3 , 0 , 0 ] ,
94
94
vec![ 0 , 0 , 4 , 0 , 8 , 0 ] ,
95
95
vec![ 0 , 0 , 0 , 3 , 0 , 2 ] ,
96
96
vec![ 0 , 0 , 0 , 0 , 6 , 0 ] ,
97
97
vec![ 0 , 0 , 6 , 0 , 0 , 6 ] ,
98
98
vec![ 0 , 0 , 0 , 0 , 0 , 0 ] ,
99
99
] ;
100
- assert_eq ! ( ford_fulkerson( & mut graph, 0 , 5 ) , 7 ) ;
100
+ assert_eq ! ( ford_fulkerson( & graph, 0 , 5 ) , 7 ) ;
101
101
}
102
102
103
103
#[ test]
104
104
fn test_example_3 ( ) {
105
- let mut graph = vec ! [
105
+ let graph = vec ! [
106
106
vec![ 0 , 10 , 0 , 10 , 0 , 0 ] ,
107
107
vec![ 0 , 0 , 4 , 2 , 8 , 0 ] ,
108
108
vec![ 0 , 0 , 0 , 0 , 0 , 10 ] ,
109
109
vec![ 0 , 0 , 0 , 0 , 9 , 0 ] ,
110
110
vec![ 0 , 0 , 6 , 0 , 0 , 10 ] ,
111
111
vec![ 0 , 0 , 0 , 0 , 0 , 0 ] ,
112
112
] ;
113
- assert_eq ! ( ford_fulkerson( & mut graph, 0 , 5 ) , 19 ) ;
113
+ assert_eq ! ( ford_fulkerson( & graph, 0 , 5 ) , 19 ) ;
114
114
}
115
115
116
116
#[ test]
117
117
fn test_example_4 ( ) {
118
- let mut graph = vec ! [
118
+ let graph = vec ! [
119
119
vec![ 0 , 8 , 0 , 0 , 3 , 0 ] ,
120
120
vec![ 0 , 0 , 9 , 0 , 0 , 0 ] ,
121
121
vec![ 0 , 0 , 0 , 0 , 7 , 2 ] ,
122
122
vec![ 0 , 0 , 0 , 0 , 0 , 5 ] ,
123
123
vec![ 0 , 0 , 7 , 4 , 0 , 0 ] ,
124
124
vec![ 0 , 0 , 0 , 0 , 0 , 0 ] ,
125
125
] ;
126
- assert_eq ! ( ford_fulkerson( & mut graph, 0 , 5 ) , 6 ) ;
126
+ assert_eq ! ( ford_fulkerson( & graph, 0 , 5 ) , 6 ) ;
127
127
}
128
128
129
129
#[ test]
130
130
fn test_example_5 ( ) {
131
- let mut graph = vec ! [
131
+ let graph = vec ! [
132
132
vec![ 0 , 16 , 13 , 0 , 0 , 0 ] ,
133
133
vec![ 0 , 0 , 10 , 12 , 0 , 0 ] ,
134
134
vec![ 0 , 4 , 0 , 0 , 14 , 0 ] ,
135
135
vec![ 0 , 0 , 9 , 0 , 0 , 20 ] ,
136
136
vec![ 0 , 0 , 0 , 7 , 0 , 4 ] ,
137
137
vec![ 0 , 0 , 0 , 0 , 0 , 0 ] ,
138
138
] ;
139
- assert_eq ! ( ford_fulkerson( & mut graph, 0 , 5 ) , 23 ) ;
139
+ assert_eq ! ( ford_fulkerson( & graph, 0 , 5 ) , 23 ) ;
140
140
}
141
141
}
0 commit comments