結果

問題 No.92 逃走経路
ユーザー phsplsphspls
提出日時 2020-05-24 15:46:02
言語 Rust
(1.77.0 + proconio)
結果
RE  
実行時間 -
コード長 1,759 bytes
コンパイル時間 15,910 ms
コンパイル使用メモリ 378,476 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-10-11 19:25:23
合計ジャッジ時間 17,128 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 AC 1 ms
5,248 KB
testcase_02 AC 1 ms
5,248 KB
testcase_03 AC 1 ms
5,248 KB
testcase_04 RE -
testcase_05 AC 17 ms
5,248 KB
testcase_06 AC 2 ms
5,248 KB
testcase_07 AC 1 ms
5,248 KB
testcase_08 AC 3 ms
5,248 KB
testcase_09 AC 5 ms
5,248 KB
testcase_10 AC 64 ms
5,248 KB
testcase_11 AC 60 ms
5,248 KB
testcase_12 AC 19 ms
5,248 KB
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

use std::collections::VecDeque;

fn main() {
    let mut nmk = String::new();
    std::io::stdin().read_line(&mut nmk).ok();
    let nmk: Vec<usize> = nmk.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();
    let n = nmk[0];
    let m = nmk[1];
    let mut t2c2t: Vec<Vec<Vec<usize>>> = vec![vec![vec![]; 1001]; n];
    let mut c2ts: Vec<Vec<usize>> = vec![vec![]; 1001];
    for _ in 0..m {
        let mut abc = String::new();
        std::io::stdin().read_line(&mut abc).ok();
        let abc: Vec<usize> = abc.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();
        let a = abc[0] - 1;
        let b = abc[1] - 1;
        let c = abc[2];
        t2c2t[a][c].push(b);
        t2c2t[b][c].push(a);
        if !c2ts[c].contains(&a) { c2ts[c].push(a); }
        if !c2ts[c].contains(&b) { c2ts[c].push(b); }
    }
    let mut d = String::new();
    std::io::stdin().read_line(&mut d).ok();
    let mut d: VecDeque<usize> = d.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();
    let mut cands: VecDeque<usize> = VecDeque::new();
    let l = d.pop_front().unwrap();
    c2ts[l].iter().for_each(|t| cands.push_back(*t));
    while !d.is_empty() {
        let cost = d.pop_front().unwrap();
        let lim = cands.len();
        for _ in 0..lim {
            let town = cands.pop_front().unwrap();
            t2c2t[town][cost].iter().for_each(|t| {
                cands.push_back(*t);
            });
        }
        let mut temp: Vec<usize> = cands.iter().map(|i| *i).collect();
        temp.sort();
        temp.dedup();
        cands = temp.iter().map(|i| *i).collect();
    }
    println!("{}", cands.len());
    println!("{}", cands.iter().map(|i| (i+1).to_string()).collect::<Vec<String>>().join(" "));
}
0