| Task: | Sadonkorjuu |
| Sender: | drvilepis |
| Submission time: | 2022-11-01 16:06:30 +0200 |
| Language: | Rust |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | RUNTIME ERROR | 0 |
| #2 | RUNTIME ERROR | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | RUNTIME ERROR | 0.00 s | 1, 2 | details |
| #2 | ACCEPTED | 0.00 s | 1, 2 | details |
| #3 | ACCEPTED | 0.00 s | 1, 2 | details |
| #4 | ACCEPTED | 0.00 s | 1, 2 | details |
| #5 | ACCEPTED | 0.00 s | 1, 2 | details |
| #6 | ACCEPTED | 0.00 s | 1, 2 | details |
| #7 | ACCEPTED | 0.24 s | 2 | details |
| #8 | ACCEPTED | 0.00 s | 1, 2 | details |
| #9 | ACCEPTED | 0.45 s | 2 | details |
| #10 | ACCEPTED | 0.00 s | 1, 2 | details |
| #11 | ACCEPTED | 0.27 s | 2 | details |
| #12 | ACCEPTED | 0.21 s | 2 | details |
| #13 | ACCEPTED | 0.24 s | 2 | details |
| #14 | ACCEPTED | 0.21 s | 2 | details |
| #15 | ACCEPTED | 0.00 s | 1, 2 | details |
| #16 | ACCEPTED | 0.00 s | 1, 2 | details |
| #17 | ACCEPTED | 0.00 s | 1, 2 | details |
| #18 | ACCEPTED | 0.00 s | 1, 2 | details |
| #19 | ACCEPTED | 0.01 s | 1, 2 | details |
| #20 | ACCEPTED | 0.00 s | 1, 2 | details |
| #21 | ACCEPTED | 0.46 s | 2 | details |
| #22 | ACCEPTED | 0.23 s | 2 | details |
| #23 | ACCEPTED | 0.27 s | 2 | details |
| #24 | ACCEPTED | 0.01 s | 1, 2 | details |
| #25 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #26 | ACCEPTED | 0.00 s | 1, 2 | details |
| #27 | ACCEPTED | 0.46 s | 2 | details |
| #28 | ACCEPTED | 0.00 s | 1, 2 | details |
| #29 | ACCEPTED | 0.21 s | 2 | details |
| #30 | ACCEPTED | 0.00 s | 1, 2 | details |
| #31 | ACCEPTED | 0.21 s | 2 | details |
Compiler report
warning: unused variable: `res` --> input/code.rs:34:13 | 34 | let res = stdin.read_line(&mut input).unwrap(); | ^^^ help: if this is intentional, prefix it with an underscore: `_res` | = note: `#[warn(unused_variables)]` on by default warning: 1 warning emitted
Code
use std::collections::HashMap;
fn sort(i: usize, j: usize) -> (usize, usize) {
if i < j {
(i, j)
} else {
(j, i)
}
}
fn main() {
let stdin = std::io::stdin();
let mut input = String::new();
stdin.read_line(&mut input).unwrap();
let n_cities = input.trim().parse::<usize>().unwrap();
input.clear();
stdin.read_line(&mut input).unwrap();
// true on satama, false on pelto
let types = input.split_whitespace().map(|c| c.chars().next().unwrap() == '0').collect::<Vec<_>>();
input.clear();
let mut lenmap = HashMap::new();
let mut bridgemap: HashMap<usize, Vec<usize>> = HashMap::new();
if n_cities == 1 {
println!("0");
}
for _ in 1..n_cities {
let res = stdin.read_line(&mut input).unwrap();
let mut nums = input.split_whitespace().map(|c| c.parse::<usize>().unwrap());
let (i, j) = (nums.next().unwrap() - 1, nums.next().unwrap() - 1);
let (i, j) = sort(i, j);
lenmap.insert((i, j), nums.next().unwrap());
if let Some(vec) = bridgemap.get_mut(&i) {
vec.push(j)
} else {
bridgemap.insert(i, vec![j]);
}
if let Some(vec) = bridgemap.get_mut(&j) {
vec.push(i)
} else {
bridgemap.insert(j, vec![i]);
}
input.clear();
}
let mut min_dists = vec![0; n_cities];
types.iter().enumerate().for_each(|(i, &t)| {
if !t {
return;
}
let mut nums: Vec<(usize, Option<usize>, usize)> = vec![];
nums.push((i, None, 0));
loop {
nums = nums.iter().map(|&(cur_node, last_node_opt, length)| {
let other_nodes = bridgemap.get(&cur_node).unwrap().clone();
let mut out = vec![];
for other_node in other_nodes {
if let Some(last_node) = last_node_opt {
if other_node == last_node {
continue;
}
};
let new_length = length + *lenmap.get(&sort(other_node, cur_node)).unwrap();
if !types[other_node] {
if min_dists[other_node] != 0 {
if new_length < min_dists[other_node] {
min_dists[other_node] = new_length;
} else {
continue;
}
} else {
min_dists[other_node] = new_length;
}
out.push((other_node, Some(cur_node), new_length));
}
}
out
}).flatten().collect();
if nums.is_empty() {
break;
}
}
});
let sum = min_dists.into_iter().sum::<usize>();
println!("{}", sum);
}
Test details
Test 1
Group: 1, 2
Verdict: RUNTIME ERROR
| input |
|---|
| 1 0 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Error:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', input/code.rs:71:...
Test 2
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 5 0 0 0 0 0 1 2 1 2 3 2 3 4 3 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 3
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 4 1 0 1 1 1 2 10 2 3 20 2 4 30 |
| correct output |
|---|
| 60 |
| user output |
|---|
| 60 |
Test 4
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 5 0 1 1 1 0 1 2 10 2 3 20 3 4 30 ... |
| correct output |
|---|
| 80 |
| user output |
|---|
| 80 |
Test 5
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 5 0 1 0 1 1 1 2 1 2 3 5 3 4 3 ... |
| correct output |
|---|
| 6 |
| user output |
|---|
| 6 |
Test 6
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 5506363 |
| user output |
|---|
| 5506363 |
Test 7
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1795118520 |
| user output |
|---|
| 1795118520 |
Test 8
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 ... |
| correct output |
|---|
| 293576 |
| user output |
|---|
| 293576 |
Test 9
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 816932444 |
| user output |
|---|
| 816932444 |
Test 10
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
| correct output |
|---|
| 3089 |
| user output |
|---|
| 3089 |
Test 11
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
| correct output |
|---|
| 40839 |
| user output |
|---|
| 40839 |
Test 12
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 5683983203973 |
| user output |
|---|
| 5683983203973 |
Test 13
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 ... |
| correct output |
|---|
| 58572993 |
| user output |
|---|
| 58572993 |
Test 14
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
| correct output |
|---|
| 32755 |
| user output |
|---|
| 32755 |
Test 15
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 126238345 |
| user output |
|---|
| 126238345 |
Test 16
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 ... |
| correct output |
|---|
| 278678 |
| user output |
|---|
| 278678 |
Test 17
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 ... |
| correct output |
|---|
| 34929 |
| user output |
|---|
| 34929 |
Test 18
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1543963 |
| user output |
|---|
| 1543963 |
Test 19
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
| correct output |
|---|
| 39606 |
| user output |
|---|
| 39606 |
Test 20
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 ... |
| correct output |
|---|
| 321598 |
| user output |
|---|
| 321598 |
Test 21
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 978670626 |
| user output |
|---|
| 978670626 |
Test 22
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
| correct output |
|---|
| 375218 |
| user output |
|---|
| 375218 |
Test 23
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 ... |
| correct output |
|---|
| 60422556 |
| user output |
|---|
| 60422556 |
Test 24
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 291990 |
| user output |
|---|
| 291990 |
Test 25
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 59607954 |
| user output |
|---|
| (empty) |
Test 26
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 990 |
| user output |
|---|
| 990 |
Test 27
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 199982 |
| user output |
|---|
| 199982 |
Test 28
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 7987 |
| user output |
|---|
| 7987 |
Test 29
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 3137875 |
| user output |
|---|
| 3137875 |
Test 30
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 4657693 |
| user output |
|---|
| 4657693 |
Test 31
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 200000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1652889357 |
| user output |
|---|
| 1652889357 |
