1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include<bits/stdc++.h> int m[105][105]; int c[105][105]; int G=0, V=0; void dfs(int a, int x, int y){ for(int i=-1; i<2; i++){ for(int j=-1; j<2; j++){ if(!c[x+i][y+j]){ if(m[x+i][y+j]==a){ c[x+i][y+j] = 1; dfs(a, x+i, y+j); } } } } } int main(){ int w, h; memset(c, 0, sizeof(c)); scanf("%d%d", &w, &h); char tmp[w+2]; for(int i=1; i<h+1; i++){ scanf("%s", tmp); for(int j=0; j<w; j++){ if(tmp[j]=='-') m[i][j+1] = 1; if(tmp[j]=='G') m[i][j+1] = 2; } } for(int i=1; i<h+1; i++){ for(int j=1; j<w+1; j++){ if(m[i][j]==1&&!c[i][j]){ V++; dfs(1, i, j); } if(m[i][j]==2&&!c[i][j]){ G++; dfs(2, i, j); } } } printf("%d %d\n", G, V); }
|