結果

問題 No.3263 違法な散歩道
ユーザー lp_ql
提出日時 2025-09-06 13:46:08
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 129 ms / 2,000 ms
コード長 1,156 bytes
コンパイル時間 14,507 ms
コンパイル使用メモリ 397,808 KB
実行使用メモリ 17,508 KB
最終ジャッジ日時 2025-09-06 13:46:26
合計ジャッジ時間 17,776 ms
ジャッジサーバーID
(参考情報)
judge / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28
権限があれば一括ダウンロードができます
コンパイルメッセージ
warning: unused import: `VecDeque`
 --> src/main.rs:1:36
  |
1 | use std::collections::{BinaryHeap, VecDeque};
  |                                    ^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

ソースコード

diff #

use std::collections::{BinaryHeap, VecDeque};
use proconio::{input, marker::Usize1};
fn main() {
    input!{
        n: usize,
        m: usize,
        uv: [(Usize1, Usize1); m],
        k: usize,
        a: [Usize1; k]
    }
    let mut g = vec![vec![]; n];
    for (u, v) in uv{
        g[u].push(v);
        g[v].push(u);
    }
    let mut vis = vec![vec![false; 5]; n];
    let mut q = BinaryHeap::new();
    q.push((!0usize, 0, 0));
    let mut iwai = vec![false; n];
    for i in a{
        iwai[i] = true;
    }
    vis[0][0] = true;
    while let Some((dist, i, j)) = q.pop() {
        if i == n - 1{
            println!("{}", !dist);
            return;
        }
        for &nv in &g[i]{
            if iwai[nv] && j < 4{
                if vis[nv][j + 1]{
                    continue;
                }
                vis[nv][j + 1] = true;
                q.push((dist - 1, nv, j + 1));
            }
            else if !iwai[nv]{
                if vis[nv][0]{
                    continue;
                }
                vis[nv][0] = true;
                q.push((dist - 1, nv, 0));
            }
        }
    }
    println!("-1")
}
0