Submission #68143056
Source Code Expand
use std::collections::HashSet; use proconio::{input, marker::Usize1}; fn main() { input! { t: usize, }; for _ in 0..t { input! { n: usize, m: usize, x: Usize1, y: Usize1, edges: [(Usize1, Usize1); m], }; solve(n, m, x, y, edges); } } fn solve(n: usize, _m: usize, x: usize, y: usize, edges: Vec<(usize, usize)>) { let mut g = vec![vec![]; n]; for &(u, v) in &edges { g[u].push(v); g[v].push(u); } for i in 0..n { g[i].sort_unstable(); } let mut t = 1; let mut seen = vec![0; n]; let mut path = vec![x]; loop { let u = path.last().copied().unwrap(); let mut next = Option::<usize>::None; let path_set = path.iter().copied().collect::<HashSet<_>>(); // g[u]: sorted for &v in &g[u] { f(v, &g, &path_set, t, &mut seen); let reach_y = seen[y] == t; t += 1; if reach_y { next = Some(v); break; } } let next = next.unwrap_or_else(|| panic!("!?")); path.push(next); if next == y { break; } } println!( "{}", path.iter() .map(|x| (x + 1).to_string()) .collect::<Vec<_>>() .join(" ") ); } fn f(i: usize, g: &Vec<Vec<usize>>, path: &HashSet<usize>, t: usize, seen: &mut Vec<usize>) { if seen[i] == t || path.contains(&i) { return; } seen[i] = t; for &j in &g[i] { f(j, g, path, t, seen); } }
Submission Info
Submission Time | |
---|---|
Task | E - A Path in A Dictionary |
User | ikd |
Language | Rust (rustc 1.70.0) |
Score | 475 |
Code Size | 1716 Byte |
Status | AC |
Exec Time | 296 ms |
Memory | 4736 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 475 / 475 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example_00.txt |
All | example_00.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, hand_09.txt, hand_10.txt, hand_11.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_00.txt | AC | 1 ms | 2020 KiB |
hand_00.txt | AC | 94 ms | 4604 KiB |
hand_01.txt | AC | 20 ms | 2136 KiB |
hand_02.txt | AC | 79 ms | 4536 KiB |
hand_03.txt | AC | 20 ms | 2140 KiB |
hand_04.txt | AC | 23 ms | 2604 KiB |
hand_05.txt | AC | 99 ms | 4680 KiB |
hand_06.txt | AC | 208 ms | 4736 KiB |
hand_07.txt | AC | 1 ms | 2036 KiB |
hand_08.txt | AC | 75 ms | 4200 KiB |
hand_09.txt | AC | 207 ms | 4180 KiB |
hand_10.txt | AC | 31 ms | 2228 KiB |
hand_11.txt | AC | 1 ms | 1928 KiB |
random_00.txt | AC | 1 ms | 1916 KiB |
random_01.txt | AC | 1 ms | 1896 KiB |
random_02.txt | AC | 1 ms | 1904 KiB |
random_03.txt | AC | 1 ms | 1972 KiB |
random_04.txt | AC | 1 ms | 2044 KiB |
random_05.txt | AC | 2 ms | 1988 KiB |
random_06.txt | AC | 1 ms | 1952 KiB |
random_07.txt | AC | 1 ms | 2112 KiB |
random_08.txt | AC | 2 ms | 2048 KiB |
random_09.txt | AC | 4 ms | 1904 KiB |
random_10.txt | AC | 6 ms | 2132 KiB |
random_11.txt | AC | 7 ms | 2224 KiB |
random_12.txt | AC | 1 ms | 1952 KiB |
random_13.txt | AC | 1 ms | 2112 KiB |
random_14.txt | AC | 4 ms | 2072 KiB |
random_15.txt | AC | 15 ms | 2288 KiB |
random_16.txt | AC | 18 ms | 2376 KiB |
random_17.txt | AC | 27 ms | 2496 KiB |
random_18.txt | AC | 1 ms | 1936 KiB |
random_19.txt | AC | 0 ms | 1872 KiB |
random_20.txt | AC | 245 ms | 4232 KiB |
random_21.txt | AC | 4 ms | 2312 KiB |
random_22.txt | AC | 83 ms | 3784 KiB |
random_23.txt | AC | 106 ms | 4480 KiB |
random_24.txt | AC | 1 ms | 1984 KiB |
random_25.txt | AC | 5 ms | 2224 KiB |
random_26.txt | AC | 296 ms | 4092 KiB |
random_27.txt | AC | 110 ms | 4256 KiB |
random_28.txt | AC | 40 ms | 4708 KiB |
random_29.txt | AC | 82 ms | 4492 KiB |