結果
問題 |
No.3263 違法な散歩道
|
ユーザー |
![]() |
提出日時 | 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
ソースコード
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") }