結果
問題 |
No.697 池の数はいくつか
|
ユーザー |
![]() |
提出日時 | 2019-05-06 21:11:35 |
言語 | C++11(廃止可能性あり) (gcc 13.3.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; }