Skip to content

Commit bc2756e

Browse files
committed
p2924
1 parent 25fde5a commit bc2756e

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

src/p2924.rs

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
use std::collections::{HashMap, HashSet};
2+
3+
pub fn run() {
4+
for i in [
5+
(3, vec![vec![0,1],vec![1,2]]),
6+
(4, vec![vec![0,2],vec![1,3],vec![1,2]])
7+
] {
8+
println!("{}", find_champion(i.0, i.1));
9+
}
10+
}
11+
12+
pub fn find_champion(n: i32, edges: Vec<Vec<i32>>) -> i32 {
13+
let mut parents: Vec<i32> = (0..n).collect();
14+
15+
for i in edges {
16+
parents[i[1] as usize] = -1;
17+
// has_parents.remove(&i[1]);
18+
}
19+
20+
let mut last = 0;
21+
let mut count = 0;
22+
for i in parents {
23+
if i == -1 {
24+
continue;
25+
}
26+
if count != 0 {
27+
return -1;
28+
}
29+
last = i;
30+
count += 1;
31+
}
32+
if count == 1 {
33+
return last;
34+
}
35+
-1
36+
37+
38+
// let mut parents: HashMap<i32, Vec<i32>> = HashMap::new();
39+
40+
// for i in 0..n {
41+
// parents.insert(i, vec![]);
42+
// }
43+
44+
// for i in edges {
45+
// parents.get_mut(&i[1]).unwrap().push(i[0]);
46+
// }
47+
48+
// let mut candidates: Vec<i32> = vec![];
49+
// for i in parents {
50+
// if !i.1.is_empty() {
51+
// continue;
52+
// }
53+
// candidates.push(i.0);
54+
// }
55+
56+
// if candidates.len() != 1 {
57+
// return -1;
58+
// }
59+
60+
// candidates[0]
61+
}

0 commit comments

Comments
 (0)