結果
| 問題 |
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");
}
おもち(求肥)