結果
問題 |
No.3158 Collect Stamps
|
ユーザー |
|
提出日時 | 2025-05-23 20:08:43 |
言語 | Rust (1.83.0 + proconio) |
結果 |
WA
|
実行時間 | - |
コード長 | 858 bytes |
コンパイル時間 | 13,186 ms |
コンパイル使用メモリ | 397,744 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-05-23 20:09:01 |
合計ジャッジ時間 | 14,884 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 7 WA * 28 |
ソースコード
use std::collections::HashSet; use proconio::{input, marker::Usize1}; fn main() { input! { n: usize, m: usize, k: usize, a: [Usize1; k], t: [[usize; n]; n] } let mut ans = n * n * 2; for x in 0..n { dfs(x, n, &t, &a, m, 0, &mut HashSet::new(), &mut ans); } if ans == n * n * 2 { println!("-1"); } else { println!("{}", ans); } } fn dfs(x: usize, n: usize, t: &[Vec<usize>], a: &[usize], m: usize, c: usize, visited: &mut HashSet<usize>, ans: &mut usize) { if !visited.insert(x) { return; } if visited.len() == m { *ans = usize::min(*ans, c + a.iter().copied().map(|a| t[x][a]).min().unwrap()); return; } for i in 0..n { if i != n { dfs(i, n, t, a, m, c + t[x][i], &mut visited.clone(), ans) } } }