; i < 4; i++) { int tx = v.x + dir[i][0]; int ty = v.y + dir[i][1]; if (tx>=0&&tx
=0&&ty
Q; ma[x][y]='.'; Q.push(node(x, y)); while (!Q.empty()) { node v = Q.front();Q.pop(); if (ma[v.x][v.y] == 'X') { bfs2(v.x, v.y); ans[cnt]++; } else if(ma[v.x][v.y]=='*') { ma[v.x][v.y]='.'; } for (int i = 0; i < 4; i++) { int tx = v.x + dir[i][0]; int ty = v.y + dir[i][1]; if (ma[tx][ty]!='.'&&tx>=0&&tx
=0&&ty
> n >> m) { if (!m && !n) { break; } cnt=0; getchar(); memset(ans, 0, sizeof(ans)); memset(ma,'.',sizeof(ma)); for (i = 0; i < m; i++) { cin >> ma[i]; } for (i = 0; i < m; i++) for (int j = 0; j < n; j++) if (ma[i][j]=='*') { bfs1(i, j); } sort(ans,ans+cnt); cout<<"Throw "<
|