結果
問題 |
No.2910 単体ホモロジー入門
|
ユーザー |
|
提出日時 | 2024-10-31 16:43:04 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,023 bytes |
コンパイル時間 | 13,834 ms |
コンパイル使用メモリ | 401,732 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-11-06 01:41:26 |
合計ジャッジ時間 | 16,038 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 47 |
ソースコード
use std::collections::HashSet; use proconio::input; fn main() { input! { n:usize, m:usize, uv:[(usize,usize);m], mut v:[usize;3], } let mut g = vec![vec![]; n]; for &(u, v) in uv.iter() { g[u].push(v); g[v].push(u); } let mut loops = vec![]; for i in 0..n { dfs(i, n, &mut vec![], &g, &mut loops); } let mut set_loops = HashSet::new(); for mut lop in loops { lop.sort(); set_loops.insert(lop); } v.sort(); let ans = set_loops.iter().any(|lop| lop != &v); println!("{}", if ans { "Yes" } else { "No" }); } fn dfs( crr: usize, prv: usize, path: &mut Vec<usize>, g: &Vec<Vec<usize>>, loops: &mut Vec<Vec<usize>>, ) { path.push(crr); for &nxt in g[crr].iter() { if path[0] == nxt && nxt != prv { loops.push(path.clone()); } if !path.contains(&nxt) { dfs(nxt, crr, path, g, loops); } } path.pop(); }