結果
| 問題 | No.697 池の数はいくつか |
| ユーザー |
jjjjjjjtgpptmjj
|
| 提出日時 | 2019-05-06 21:11:35 |
| 言語 | C++11(廃止可能性あり) (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 1,604 ms / 6,000 ms |
| コード長 | 1,145 bytes |
| 記録 | |
| コンパイル時間 | 1,373 ms |
| コンパイル使用メモリ | 162,928 KB |
| 実行使用メモリ | 38,656 KB |
| 最終ジャッジ日時 | 2024-11-08 08:15:29 |
| 合計ジャッジ時間 | 14,791 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 32 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i,N) for(int i=0;i<int(N);++i)
#define rep1(i,N) for(int i=1;i<int(N);++i)
#define all(a) (a).begin(),(a).end() //sort(all(vi S)) sort(all(string S))
#define push_back pb
#define print(v) { cerr<<#v<<": [ "; for(auto _ : v) cerr<<_<<", "; cerr<<"]"<<endl; }
using P = pair<int, int>; //P.first, P.second
typedef long long ll;
typedef vector<int> vi;
typedef set<int> seti;
typedef vector<string> vs;
const int MOD = 1e9+7;
const int INF = 1e9;
int H,W;
int A[3005][3005];
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,1,-1};
bool in(int x, int y){
return 0<=x&&x<H&&0<=y&&y<W;
}
void bfs(int a,int b){
queue<P> Q;
Q.push({a,b});
while(!Q.empty()){
P p = Q.front();
Q.pop();
int x = p.first, y = p.second;
rep(i,4){
int nx = x + dx[i], ny = y + dy[i];
if(!in(nx,ny)||A[nx][ny] == 0)continue;
A[nx][ny] = 0;
Q.push({nx,ny});
}
}
}
int main() {
cin>>H>>W;
rep(i,H)rep(j,W){
cin>>A[i][j];
}
/* rep(i,H){
rep(j,W){
cerr<<A[i][j];
}
cerr<<endl;
}*/
int ans = 0;
rep(i,H)rep(j,W){
if(A[i][j] == 1){
bfs(i,j);
ans++;
}
}
cout<<ans<<endl;
}
jjjjjjjtgpptmjj