結果

問題 No.697 池の数はいくつか
ユーザー mai
提出日時 2018-06-18 11:40:06
言語 cLay
(20241019-1)
結果
MLE  
実行時間 -
コード長 591 bytes
コンパイル時間 2,465 ms
コンパイル使用メモリ 177,048 KB
実行使用メモリ 696,236 KB
最終ジャッジ日時 2024-11-25 13:41:41
合計ジャッジ時間 6,696 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 30 MLE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

int H,W;
int iso = 0;
int A[3002][3002];

void dfs(int y, int x){
    if (A[y][x] == 0) return;
    A[y][x] = 0; --iso;
    if ((y^x)&3 == 0)      {dfs(y, x-1);dfs(y, x+1);dfs(y-1, x);dfs(y+1, x);}
    else if ((y^x)&3 == 1) {dfs(y, x+1);dfs(y, x-1);dfs(y+1, x);dfs(y-1, x);}
    else if ((y^x)&3 == 2) {dfs(y-1, x);dfs(y+1, x);dfs(y, x-1);dfs(y, x+1);}
    else                   {dfs(y+1, x);dfs(y-1, x);dfs(y, x+1);dfs(y, x-1);}
}

{
    rd(H,W);
    REP(y,1,H+1) REP(x,1,W+1) rd(A[y][x]), iso += A[y][x];
    REP(y,1,H+1) REP(x,1,W+1) if (A[y][x] == 1){ ++iso; dfs(y,x); }
    wt(iso);
}
0