Please sign in first.
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 |
|
| 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 |