結果
| 問題 |
No.697 池の数はいくつか
|
| ユーザー |
|
| 提出日時 | 2018-06-09 20:33:04 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 542 bytes |
| コンパイル時間 | 513 ms |
| コンパイル使用メモリ | 31,104 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-25 13:01:04 |
| 合計ジャッジ時間 | 5,508 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 26 RE * 6 |
ソースコード
#include <stdio.h>
#define add(x,y) if(0<=x&&x<n&&0<=y&&y<m&&T[y][x])T[y][x]=0,q[qe]=(x)*10000+(y),qe=(qe+1)%100000;
int T[1001][1001],n,m;
void fill(int x,int y){
int q[100000];
int qs=0,qe=0;
add(x,y);
for(;qs!=qe;){
int cur=q[qs];qs=(qs+1)%100000;
int x=cur/10000,y=cur%10000;
add(x-1,y);
add(x+1,y);
add(x,y-1);
add(x,y+1);
}
}
int main(){
int i,j,r=0;
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",T[i]+j);
for(i=0;i<m;i++)for(j=0;j<n;j++)if(T[i][j])r++,fill(j,i);
printf("%d\n",r);
return 0;
}