結果
| 問題 |
No.697 池の数はいくつか
|
| ユーザー |
titia
|
| 提出日時 | 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);
}
titia