結果
問題 |
No.3263 違法な散歩道
|
ユーザー |
![]() |
提出日時 | 2025-09-06 15:01:28 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 83 ms / 2,000 ms |
コード長 | 1,090 bytes |
コンパイル時間 | 14,753 ms |
コンパイル使用メモリ | 396,796 KB |
実行使用メモリ | 18,612 KB |
最終ジャッジ日時 | 2025-09-06 15:02:08 |
合計ジャッジ時間 | 17,414 ms |
ジャッジサーバーID (参考情報) |
judge / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
use proconio::input; use std::collections::{HashSet, VecDeque}; fn main() { input! { n: usize, m: usize, } let mut graph = vec![HashSet::<usize>::new(); n+1]; for _ in 0..m { input!{ u: usize, v: usize } graph[u].insert(v); graph[v].insert(u); } input!{ k: usize } let mut iwai = vec![false; n+1]; for _ in 0..k { input!{ a: usize } iwai[a] = true; } let mut q = VecDeque::new(); q.push_back((1,0,0)); let mut visited = vec![vec![false; n+1]; 5]; while let Some(state) = q.pop_front() { let (pos, encount, depth) = state; if pos == n { println!("{}", depth); return;} for v in &graph[pos]{ let mut nenc=encount; if iwai[pos] { nenc += 1;} else { nenc = 0; } if nenc == 5 {continue;} if visited[nenc][*v] {continue;} visited[nenc][*v] = true; q.push_back((*v,nenc,depth+1)); } } println!("-1"); }