求助,12pt

P8662 [蓝桥杯 2018 省 AB] 全球变暖

zhao_zi_ou @ 2025-01-11 18:47:48

#include <bits/stdc++.h>
using namespace std; 
#define LL long long
#define LD long double
#define UG unsigned
int n;
int s[1005][1005];
bool f[1005][1005];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
void dr()
{
    memset(s,-1,sizeof(s));
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            char c;
            cin>>c;
            s[i][j]=(c=='.'?-1:0);
        }
    }
    for(int x=1;x<=n;x++)
    {
        for(int y=1;y<=n;y++)
        {
            if(s[x][y]!=-1)
            {
                for(int k=0;k<4;k++)
                {
                    int tx=x+dx[k];
                    int ty=y+dy[k];
                    if(s[tx][ty]==-1) s[x][y]=1;
                }
            }
        }
    }
}
bool bfs(int stx,int sty)
{
    bool flag=true;
    queue<pair<int,int>> q;
    q.push(make_pair(stx,sty));
    f[stx][sty]=true;
    if(s[stx][sty]==1) return false;
    while(!q.empty())
    {
        int x=q.front().first;
        int y=q.front().second;
        q.pop();
        for(int k=0;k<4;k++)
        {
            int tx=x+dx[k];
            int ty=y+dy[k];
            if(s[tx][ty]!=-1&&!f[tx][ty])
            {
                if(s[tx][ty]==0) flag=false;
                q.push(make_pair(tx,ty));
                f[tx][ty]=true;
                s[tx][ty]=-1;
            }
        }
    }
    return flag;
}
int main()
{
    dr();
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(s[i][j]!=-1) ans+=int(bfs(i,j));
        }
    }
    cout<<ans;
    return 0;
}

/*

至理名言

骗分过样例,暴力出奇迹。
暴搜挂着机,打表出省一。
N方过百万,暴力踩标算。
肥修赛大象,只是代码短。

想要骗到分,一定有方法。
图论背模版,数论背公式。
动规背方程,高精背代码。
要是都不会,干脆输样例。

模拟只会猜题意,贪心只能过样例。
数学上来先打表,DP一般看规律。

组合数学靠运气,计算几何瞎暴力。
图论一顿套模版,数论只会GCD。

-------------------------------

洛谷规则怪谈: 

1、岛国题输出要换行, 若特殊说明可以不换, 请忽略此条规则
2、提交代码中不会出现strign或mian, 若出现,立马改正,并扇自己3耳光
3、每天在luogu起码刷3道题, 但若是1月内抄10及以上篇题解, 后果自负

若违反以上规则, 轻则WA,重则棕名或封号

-------------------------------

next_permutation(指针1,指针2);

priority_queue<signed,vector<signed>,greater<signed>> q;

*/

|