提出 #63065958
ソースコード 拡げる
#![allow(unused)]
use std::collections::VecDeque;
fn main() {
let n = read::<usize>();
let mut arr = vec![];
for _ in 0..n {
arr.push(reads());
}
let inf = 1_000_000;
// dp[u][v] = minimum distance from u to v using palindrome path
let mut dp = vec![vec![inf; n]; n];
let mut que = VecDeque::new();
for a in 0..n {
dp[a][a] = 0;
que.push_back((a, a));
}
for a in 0..n {
for b in 0..n {
if a != b && arr[a][b] != '-' {
dp[a][b] = 1;
que.push_back((a, b));
}
}
}
while let Some((s, t)) = que.pop_front() {
for u in 0..n {
for v in 0..n {
// u -> s ~> t -> v
if arr[u][s] == arr[t][v] && arr[u][s] != '-' && arr[t][v] != '-' {
if dp[s][t] + 2 < dp[u][v] {
dp[u][v] = dp[u][v].min(dp[s][t] + 2);
que.push_back((u, v));
}
}
}
}
}
for r in 0..n {
let row = mapv(&dp[r], |&x| if x == inf { -1 } else { x });
println!("{}", join(&row, " "));
}
}
fn read<T: std::str::FromStr>() -> T {
let mut s = String::new();
std::io::stdin().read_line(&mut s).ok();
s.trim().parse().ok().unwrap()
}
fn readv<T: std::str::FromStr>() -> Vec<T> {
read::<String>()
.split_ascii_whitespace()
.map(|t| t.parse().ok().unwrap())
.collect()
}
fn reads() -> Vec<char> {
read::<String>().chars().collect()
}
fn mapv<T, S, F: Fn(&T) -> S>(arr: &Vec<T>, f: F) -> Vec<S> {
arr.iter().map(f).collect()
}
fn join<T: ToString>(arr: &[T], sep: &str) -> String {
arr.iter()
.map(|x| x.to_string())
.collect::<Vec<String>>()
.join(sep)
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Palindromic Shortest Path |
| ユーザ | amoshuangyc |
| 言語 | Rust (rustc 1.70.0) |
| 得点 | 450 |
| コード長 | 1916 Byte |
| 結果 | AC |
| 実行時間 | 186 ms |
| メモリ | 2348 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 450 / 450 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample00.txt, sample01.txt |
| All | sample00.txt, sample01.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt, testcase43.txt, testcase44.txt, testcase45.txt, testcase46.txt, testcase47.txt, testcase48.txt, testcase49.txt, testcase50.txt, testcase51.txt, testcase52.txt, testcase53.txt, testcase54.txt, testcase55.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample00.txt | AC | 1 ms | 1936 KiB |
| sample01.txt | AC | 1 ms | 1868 KiB |
| testcase00.txt | AC | 1 ms | 1852 KiB |
| testcase01.txt | AC | 1 ms | 2048 KiB |
| testcase02.txt | AC | 4 ms | 1972 KiB |
| testcase03.txt | AC | 186 ms | 2332 KiB |
| testcase04.txt | AC | 1 ms | 1948 KiB |
| testcase05.txt | AC | 2 ms | 1964 KiB |
| testcase06.txt | AC | 4 ms | 2172 KiB |
| testcase07.txt | AC | 4 ms | 2000 KiB |
| testcase08.txt | AC | 5 ms | 1908 KiB |
| testcase09.txt | AC | 10 ms | 2004 KiB |
| testcase10.txt | AC | 3 ms | 1964 KiB |
| testcase11.txt | AC | 11 ms | 2080 KiB |
| testcase12.txt | AC | 7 ms | 1936 KiB |
| testcase13.txt | AC | 10 ms | 2048 KiB |
| testcase14.txt | AC | 2 ms | 1972 KiB |
| testcase15.txt | AC | 12 ms | 2024 KiB |
| testcase16.txt | AC | 1 ms | 2104 KiB |
| testcase17.txt | AC | 4 ms | 1964 KiB |
| testcase18.txt | AC | 2 ms | 2128 KiB |
| testcase19.txt | AC | 6 ms | 2176 KiB |
| testcase20.txt | AC | 8 ms | 2036 KiB |
| testcase21.txt | AC | 103 ms | 2260 KiB |
| testcase22.txt | AC | 36 ms | 2112 KiB |
| testcase23.txt | AC | 113 ms | 2348 KiB |
| testcase24.txt | AC | 11 ms | 2152 KiB |
| testcase25.txt | AC | 130 ms | 2276 KiB |
| testcase26.txt | AC | 13 ms | 2068 KiB |
| testcase27.txt | AC | 102 ms | 2288 KiB |
| testcase28.txt | AC | 38 ms | 2200 KiB |
| testcase29.txt | AC | 118 ms | 2260 KiB |
| testcase30.txt | AC | 18 ms | 2032 KiB |
| testcase31.txt | AC | 132 ms | 2232 KiB |
| testcase32.txt | AC | 27 ms | 2096 KiB |
| testcase33.txt | AC | 118 ms | 2224 KiB |
| testcase34.txt | AC | 16 ms | 2148 KiB |
| testcase35.txt | AC | 123 ms | 2320 KiB |
| testcase36.txt | AC | 30 ms | 2052 KiB |
| testcase37.txt | AC | 140 ms | 2272 KiB |
| testcase38.txt | AC | 44 ms | 2076 KiB |
| testcase39.txt | AC | 107 ms | 2144 KiB |
| testcase40.txt | AC | 112 ms | 2268 KiB |
| testcase41.txt | AC | 125 ms | 2304 KiB |
| testcase42.txt | AC | 28 ms | 2192 KiB |
| testcase43.txt | AC | 145 ms | 2260 KiB |
| testcase44.txt | AC | 13 ms | 1944 KiB |
| testcase45.txt | AC | 31 ms | 2056 KiB |
| testcase46.txt | AC | 14 ms | 2144 KiB |
| testcase47.txt | AC | 111 ms | 1956 KiB |
| testcase48.txt | AC | 76 ms | 2176 KiB |
| testcase49.txt | AC | 121 ms | 2164 KiB |
| testcase50.txt | AC | 53 ms | 1868 KiB |
| testcase51.txt | AC | 130 ms | 2304 KiB |
| testcase52.txt | AC | 15 ms | 1968 KiB |
| testcase53.txt | AC | 140 ms | 2204 KiB |
| testcase54.txt | AC | 91 ms | 2132 KiB |
| testcase55.txt | AC | 153 ms | 2252 KiB |