Submission #18783508


Source Code Expand

use std::cmp::Reverse;
use std::collections::{BTreeMap, BinaryHeap, VecDeque};

const INF: i64 = 1 << 60;

fn main() {
    let (r, w) = (std::io::stdin(), std::io::stdout());
    let mut sc = IO::new(r.lock(), w.lock());

    let first = sc.chars();
    let last = sc.chars();

    if first == last {
        println!("0");
        for c in first {
            print!("{}", c);
        }
        println!();
        for c in last {
            print!("{}", c);
        }
        println!();
        return;
    }

    let l = first.len();
    let n: usize = sc.read();
    let mut dict = (0..n).map(|_| sc.chars()).collect::<Vec<_>>();
    dict.push(first);
    dict.push(last);

    let n = n + 2;
    let mut graph = vec![vec![]; n];
    for i in 0..n {
        for j in 0..n {
            let mut count = 0;
            for p in 0..l {
                if dict[i][p] != dict[j][p] {
                    count += 1;
                }
                if count > 1 {
                    break;
                }
            }
            if count == 1 {
                graph[i].push(j);
                graph[j].push(i);
            }
        }
    }

    let source = n - 2;
    let sink = n - 1;

    let mut q = VecDeque::new();
    let mut dist = vec![INF; n];
    q.push_back(source);
    dist[source] = 0;
    while let Some(v) = q.pop_front() {
        if v == sink {
            let mut ans = vec![];
            let mut cur = sink;
            while cur != source {
                let mut s = String::new();
                for &c in &dict[cur] {
                    s.push(c);
                }
                ans.push(s);
                let (_, prev) = graph[cur]
                    .iter()
                    .map(|&prev| (dist[prev], prev))
                    .min()
                    .unwrap();
                cur = prev;
            }
            let mut s = String::new();
            for &c in &dict[cur] {
                s.push(c);
            }
            ans.push(s);

            println!("{}", ans.len() - 2);
            for ans in ans.into_iter().rev() {
                println!("{}", ans);
            }

            return;
        }
        for &next in graph[v].iter() {
            if dist[next] > dist[v] + 1 {
                dist[next] = dist[v] + 1;
                q.push_back(next);
            }
        }
    }
    sc.write("-1\n");
}

pub struct IO<R, W: std::io::Write>(R, std::io::BufWriter<W>);

impl<R: std::io::Read, W: std::io::Write> IO<R, W> {
    pub fn new(r: R, w: W) -> Self {
        Self(r, std::io::BufWriter::new(w))
    }
    pub fn write<S: ToString>(&mut self, s: S) {
        use std::io::Write;
        self.1.write_all(s.to_string().as_bytes()).unwrap();
    }
    pub fn read<T: std::str::FromStr>(&mut self) -> T {
        use std::io::Read;
        let buf = self
            .0
            .by_ref()
            .bytes()
            .map(|b| b.unwrap())
            .skip_while(|&b| b == b' ' || b == b'\n' || b == b'\r' || b == b'\t')
            .take_while(|&b| b != b' ' && b != b'\n' && b != b'\r' && b != b'\t')
            .collect::<Vec<_>>();
        unsafe { std::str::from_utf8_unchecked(&buf) }
            .parse()
            .ok()
            .expect("Parse error.")
    }
    pub fn vec<T: std::str::FromStr>(&mut self, n: usize) -> Vec<T> {
        (0..n).map(|_| self.read()).collect()
    }
    pub fn chars(&mut self) -> Vec<char> {
        self.read::<String>().chars().collect()
    }
}

Submission Info

Submission Time
Task C - ダブレット
User kenkoooo
Language Rust (1.42.0)
Score 100
Code Size 3615 Byte
Status AC
Exec Time 38 ms
Memory 19216 KiB

Compile Error

warning: unused import: `std::cmp::Reverse`
 --> src/main.rs:1:5
  |
1 | use std::cmp::Reverse;
  |     ^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused imports: `BTreeMap`, `BinaryHeap`
 --> src/main.rs:2:24
  |
2 | use std::collections::{BTreeMap, BinaryHeap, VecDeque};
  |                        ^^^^^^^^  ^^^^^^^^^^

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 86
Set Name Test Cases
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_rand_00.txt, 01_rand_01.txt, 01_rand_02.txt, 01_rand_03.txt, 01_rand_04.txt, 01_rand_05.txt, 01_rand_06.txt, 01_rand_07.txt, 01_rand_08.txt, 01_rand_09.txt, 01_rand_10.txt, 01_rand_11.txt, 01_rand_12.txt, 01_rand_13.txt, 01_rand_14.txt, 01_rand_15.txt, 01_rand_16.txt, 01_rand_17.txt, 01_rand_18.txt, 01_rand_19.txt, 02_maxrand_00.txt, 02_maxrand_01.txt, 02_maxrand_02.txt, 02_maxrand_03.txt, 02_maxrand_04.txt, 02_maxrand_05.txt, 02_maxrand_06.txt, 02_maxrand_07.txt, 02_maxrand_08.txt, 02_maxrand_09.txt, 02_maxrand_10.txt, 02_maxrand_11.txt, 02_maxrand_12.txt, 02_maxrand_13.txt, 02_maxrand_14.txt, 02_maxrand_15.txt, 02_maxrand_16.txt, 02_maxrand_17.txt, 02_maxrand_18.txt, 02_maxrand_19.txt, 03_long_00.txt, 03_long_01.txt, 03_long_02.txt, 03_long_03.txt, 03_long_04.txt, 03_long_05.txt, 03_long_06.txt, 03_long_07.txt, 03_long_08.txt, 03_long_09.txt, 03_long_10.txt, 03_long_11.txt, 03_long_12.txt, 03_long_13.txt, 03_long_14.txt, 03_long_15.txt, 03_long_16.txt, 03_long_17.txt, 03_long_18.txt, 03_long_19.txt, 04_manygroup_00.txt, 04_manygroup_01.txt, 04_manygroup_02.txt, 04_manygroup_03.txt, 04_manygroup_04.txt, 04_manygroup_05.txt, 04_manygroup_06.txt, 04_manygroup_07.txt, 04_manygroup_08.txt, 04_manygroup_09.txt, 04_manygroup_10.txt, 04_manygroup_11.txt, 04_manygroup_12.txt, 04_manygroup_13.txt, 04_manygroup_14.txt, 04_manygroup_15.txt, 04_manygroup_16.txt, 04_manygroup_17.txt, 04_manygroup_18.txt, 04_manygroup_19.txt, 10_min_01.txt, 10_min_02.txt, 10_min_03.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 6 ms 2108 KiB
00_sample_02.txt AC 2 ms 2072 KiB
00_sample_03.txt AC 2 ms 2112 KiB
01_rand_00.txt AC 38 ms 2396 KiB
01_rand_01.txt AC 2 ms 2112 KiB
01_rand_02.txt AC 30 ms 2284 KiB
01_rand_03.txt AC 5 ms 2972 KiB
01_rand_04.txt AC 9 ms 2128 KiB
01_rand_05.txt AC 2 ms 2212 KiB
01_rand_06.txt AC 20 ms 2324 KiB
01_rand_07.txt AC 8 ms 2272 KiB
01_rand_08.txt AC 5 ms 2096 KiB
01_rand_09.txt AC 9 ms 2200 KiB
01_rand_10.txt AC 31 ms 2224 KiB
01_rand_11.txt AC 33 ms 2344 KiB
01_rand_12.txt AC 17 ms 2228 KiB
01_rand_13.txt AC 28 ms 2212 KiB
01_rand_14.txt AC 32 ms 18480 KiB
01_rand_15.txt AC 8 ms 2172 KiB
01_rand_16.txt AC 29 ms 17248 KiB
01_rand_17.txt AC 12 ms 2204 KiB
01_rand_18.txt AC 2 ms 2240 KiB
01_rand_19.txt AC 22 ms 2248 KiB
02_maxrand_00.txt AC 36 ms 2312 KiB
02_maxrand_01.txt AC 35 ms 2436 KiB
02_maxrand_02.txt AC 32 ms 19216 KiB
02_maxrand_03.txt AC 36 ms 2340 KiB
02_maxrand_04.txt AC 25 ms 2340 KiB
02_maxrand_05.txt AC 32 ms 2240 KiB
02_maxrand_06.txt AC 30 ms 2428 KiB
02_maxrand_07.txt AC 33 ms 2372 KiB
02_maxrand_08.txt AC 33 ms 2348 KiB
02_maxrand_09.txt AC 24 ms 2288 KiB
02_maxrand_10.txt AC 36 ms 2472 KiB
02_maxrand_11.txt AC 33 ms 2348 KiB
02_maxrand_12.txt AC 34 ms 2348 KiB
02_maxrand_13.txt AC 30 ms 2224 KiB
02_maxrand_14.txt AC 28 ms 2212 KiB
02_maxrand_15.txt AC 31 ms 2368 KiB
02_maxrand_16.txt AC 33 ms 2292 KiB
02_maxrand_17.txt AC 21 ms 4112 KiB
02_maxrand_18.txt AC 30 ms 2352 KiB
02_maxrand_19.txt AC 19 ms 2340 KiB
03_long_00.txt AC 19 ms 2336 KiB
03_long_01.txt AC 29 ms 2420 KiB
03_long_02.txt AC 18 ms 2288 KiB
03_long_03.txt AC 20 ms 2232 KiB
03_long_04.txt AC 20 ms 2352 KiB
03_long_05.txt AC 25 ms 2280 KiB
03_long_06.txt AC 19 ms 4120 KiB
03_long_07.txt AC 22 ms 2372 KiB
03_long_08.txt AC 18 ms 2328 KiB
03_long_09.txt AC 22 ms 2196 KiB
03_long_10.txt AC 21 ms 2432 KiB
03_long_11.txt AC 20 ms 2428 KiB
03_long_12.txt AC 32 ms 19124 KiB
03_long_13.txt AC 17 ms 2380 KiB
03_long_14.txt AC 22 ms 2436 KiB
03_long_15.txt AC 28 ms 2296 KiB
03_long_16.txt AC 25 ms 2420 KiB
03_long_17.txt AC 20 ms 2128 KiB
03_long_18.txt AC 21 ms 2264 KiB
03_long_19.txt AC 18 ms 2292 KiB
04_manygroup_00.txt AC 26 ms 2204 KiB
04_manygroup_01.txt AC 26 ms 2364 KiB
04_manygroup_02.txt AC 21 ms 2216 KiB
04_manygroup_03.txt AC 23 ms 2156 KiB
04_manygroup_04.txt AC 22 ms 2308 KiB
04_manygroup_05.txt AC 22 ms 2260 KiB
04_manygroup_06.txt AC 18 ms 2252 KiB
04_manygroup_07.txt AC 21 ms 2276 KiB
04_manygroup_08.txt AC 25 ms 2200 KiB
04_manygroup_09.txt AC 20 ms 2244 KiB
04_manygroup_10.txt AC 35 ms 2340 KiB
04_manygroup_11.txt AC 27 ms 2352 KiB
04_manygroup_12.txt AC 33 ms 2428 KiB
04_manygroup_13.txt AC 33 ms 2340 KiB
04_manygroup_14.txt AC 33 ms 2456 KiB
04_manygroup_15.txt AC 20 ms 2412 KiB
04_manygroup_16.txt AC 19 ms 2260 KiB
04_manygroup_17.txt AC 18 ms 2296 KiB
04_manygroup_18.txt AC 23 ms 2352 KiB
04_manygroup_19.txt AC 23 ms 2464 KiB
10_min_01.txt AC 2 ms 2104 KiB
10_min_02.txt AC 1 ms 2172 KiB
10_min_03.txt AC 1 ms 2072 KiB