結果
問題 |
No.697 池の数はいくつか
|
ユーザー |
![]() |
提出日時 | 2023-10-12 02:39:32 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 500 ms / 6,000 ms |
コード長 | 1,420 bytes |
コンパイル時間 | 14,773 ms |
コンパイル使用メモリ | 377,316 KB |
実行使用メモリ | 107,520 KB |
最終ジャッジ日時 | 2024-09-14 02:26:19 |
合計ジャッジ時間 | 20,336 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 32 |
ソースコード
use std::io; fn main() { let mut input = String::new(); io::stdin().read_line(&mut input).unwrap(); let mut values = input.trim().split_whitespace().map(|s| s.parse::<i32>().unwrap()); let h = values.next().unwrap(); let w = values.next().unwrap(); let mut a = Vec::new(); for _ in 0..h { input.clear(); io::stdin().read_line(&mut input).unwrap(); a.extend(input.trim().split_whitespace().map(|s| s.parse::<i32>().unwrap())); } let mut ans = 0; let mut use_grid = vec![0; (h * w) as usize]; for i in 0..h { for j in 0..w { let index = (i * w + j) as usize; if a[index] == 1 && use_grid[index] == 0 { ans += 1; let mut q = vec![(i, j)]; use_grid[index] = 1; while !q.is_empty() { let (x, y) = q.pop().unwrap(); for (dx, dy) in &[(1, 0), (-1, 0), (0, 1), (0, -1)] { let u = x + dx; let v = y + dy; if u >= 0 && u < h && v >= 0 && v < w && a[(u * w + v) as usize] == 1 && use_grid[(u * w + v) as usize] == 0 { use_grid[(u * w + v) as usize] = 1; q.push((u, v)); } } } } } } println!("{}", ans); }