#define _USE_MATH_DEFINES #pragma region include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //// //#include // #pragma endregion //#include ///////// #pragma region typedef typedef long long LL; typedef long double LD; typedef unsigned long long ULL; #pragma endregion //typedef ////定数 const int INF = (int)1e9; const LL MOD = (LL)1e9+7; const LL LINF = (LL)4e18+20; const LD PI = acos(-1.0); const double EPS = 1e-9; ///////// using namespace::std; int R,C; vector > fld; int index(int r,int c){ return r*C+c; } int dr[] = {0,1,0,-1}; int dc[] = {1,0,-1,0}; void cal(int r,int c,int color){ vector > visit(R,vector(C,false) ); vector start(2); start[0] = r; start[1] = c; queue< vector > now,next,zero; //visit[index(start[0],start[1]) ] = true; visit[start[0]][start[1]] = true; fld[start[0]][start[1]] = color; next.push( start ); vector temp(2); while(next.size()){ now = next; next = zero; while(now.size()){ vector dat = now.front(); now.pop(); for(int k=0;k<4;++k){ int rr = dat[0] + dr[k]; int cc = dat[1] + dc[k]; if(rr<0 || R<= rr || cc<0 || C<= cc){ continue;//範囲外 } if(fld[rr][cc] == 0){//水じゃない continue; } if(fld[rr][cc]==-1){//隣接した水 if(visit[rr][cc]==false){//未使用 visit[rr][cc] = true; fld[rr][cc] = color; temp[0] = rr; temp[1] = cc; next.push(temp); } } } } } } void solve(){ cin>>R>>C; fld=vector >(R,vector(C,0)); for(int r=0;r>ter; if(ter){ fld[r][c]=-1; } } } int ans = 0; for(int r=0;r