Compare commits

..

No commits in common. "5a3525a9ce47d7d14b7e4f9aa955dc1a16dc2e7c" and "9ec5e10c0b379e599d47463ab224d82e6b30d180" have entirely different histories.

6 changed files with 74 additions and 77 deletions

View file

@ -163,7 +163,6 @@ struct Args {
}
fn main() {
let total_start = std::time::Instant::now();
let args = Args::parse();
let graph = parse(args.filename);
@ -208,5 +207,4 @@ fn main() {
println!("{}", n + 1);
}
}
eprintln!("Total time: {:?}", total_start.elapsed());
}

View file

@ -77,11 +77,10 @@ impl Graph {
self.vertices[(self.vertices.len() - n)..].iter()
}
fn get_vertex_with_max_degree_greater_equal(&self, min_degree: u16) -> Option<u16> {
fn get_vertex_with_degree_greater(&self, min_degree: u16) -> Option<u16> {
self.vertices
.iter()
.max_by_key(|&v| v.edges.len())
.filter(|&v| v.edges.len() >= min_degree as usize)
.find(|&v| v.edges.len() >= min_degree as usize)
.map(|v| v.name)
}
@ -108,12 +107,12 @@ impl Graph {
}
pub fn binary_vertex(graph: &mut Graph, k: u16) -> Option<Vec<u16>> {
let vertex = match graph.get_vertex_with_max_degree_greater_equal(2) {
let vertex = match graph.get_vertex_with_degree_greater(2) {
Some(vertex) => vertex,
None => {
return {
let mut c = 0;
while let Some(vertex) = graph.get_vertex_with_max_degree_greater_equal(1) {
while let Some(vertex) = graph.get_vertex_with_degree_greater(1) {
graph.remove_vertex(vertex);
c += 1;
}
@ -196,7 +195,7 @@ pub fn reduction(graph: &mut Graph, k: u16) -> Option<Vec<u16>> {
}
r
} else if let Some(vertex) = graph.get_vertex_with_max_degree_greater_equal(2) {
} else if let Some(vertex) = graph.get_vertex_with_degree_greater(2) {
graph.remove_vertex(vertex);
match reduction(graph, k - 1) {
@ -348,7 +347,7 @@ pub fn reduction2(graph: &mut Graph, k: u16) -> Option<Vec<u16>> {
}
}
}
} else if let Some(vertex) = graph.get_vertex_with_max_degree_greater_equal(3) {
} else if let Some(vertex) = graph.get_vertex_with_degree_greater(3) {
if k < 1 {
return None;
}

View file

@ -1,31 +1,31 @@
35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20
21
22
23
24
25
28
27
29
31
32
33
35
34
36
37
38
39
40
41
42
43
44
45

View file

@ -13,6 +13,7 @@
22
23
24
25
26
30
32
@ -23,7 +24,6 @@
37
38
39
40
41
42
43
@ -34,9 +34,9 @@
52
53
54
55
56
58
60
63
65
67
@ -50,16 +50,16 @@
81
82
83
84
86
87
89
90
91
93
94
95
97
98
99
101
104
105

View file

@ -5,40 +5,44 @@
5
6
7
8
9
10
11
12
14
13
15
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
33
32
34
35
36
38
39
40
41
43
44
45
46
47
48
51
49
52
53
54
55
56
57
59
60
61
@ -47,14 +51,11 @@
65
66
67
68
69
72
74
75
73
76
78
79
77
80
81
82
@ -62,12 +63,11 @@
84
85
86
87
88
89
90
92
91
93
94
95
96
97
98
99
100

View file

@ -1,19 +1,17 @@
112
3
1
4
5
6
8
12
13
14
15
16
17
20
21
22
23
25
27
28
30
@ -21,34 +19,30 @@
32
33
35
36
37
39
38
40
41
42
44
43
45
49
50
51
52
53
54
55
56
57
58
59
60
62
63
64
65
66
68
70
71
72
73
74
75
77
76
78
79
80
@ -57,57 +51,63 @@
84
86
87
88
89
92
90
93
94
96
97
98
100
104
102
103
105
106
107
108
109
110
111
112
113
114
115
118
116
119
120
121
122
123
124
125
126
127
128
130
131
132
133
134
136
138
142
139
141
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
162
160
163
164
166
168
169
170
172
173
174
175
176
177