卫星照片

http://icpc.upc.edu.cn/problem.php?id=11307

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
char c[100][100],c1[100][100];
int d[4][2]= {{1,0},{0,1},{-1,0},{0,-1}},ans1,ans2,sum,max1,max2,min1,min2,ans,f,i,k1,j,m,n,k;
void dfs(int x,int y)
{
    sum++;
    c1[x][y]='.';
    max1=max(max1,x);
    max2=max(max2,y);
    min1=min(min1,x);
    min2=min(min2,y);
    for (int i=0; i<4; i++)
    {
        int x1=x+d[i][0],y1=y+d[i][1];
        if (x1>=0&&x1<n&&y1>=0&&y1<m&&c1[x1][y1]=='#')
            dfs(x1,y1);
    }
}
int main()
{
    scanf("%d%d",&n,&m);
    for (i=0; i<n; i++)
    {
        scanf("%s",&c[i]);
        strcpy(c1[i],c[i]);
    }
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
            if (c1[i][j]=='#')
            {
                sum=0;
                max1=0;
                max2=0;
                min1=1000;
                min2=1000;
                dfs(i,j);
                if (sum==(max1-min1+1)*(max2-min2+1))
                    ans1++;
                else
                    ans2++;
            }
    }
    printf("%d\n%d\n",ans1,ans2);
}
 

猜你喜欢

转载自blog.csdn.net/weixin_43601103/article/details/88376218