zoukankan      html  css  js  c++  java
  • 寒假每日一题 AcWing 1113. 红与黑(连通块内点的个数)

    题意:求连通块内点的个数

    思路:BFS  跑一遍,看看能到达那些点,记录下来,然后统计一下

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int vis[25][25];
    int dis[4][2]= {-1,0,1,0,0,1,0,-1};
    char Map[25][25];
    struct node{
        int x,y;
    
    } n1,n2;
    queue<node>q;
    void BFS()
    {
        while(!q.empty())
        {
            n2=q.front();
            q.pop();
            for(int i=0; i<4; i++)
            {
                int tx=n2.x+dis[i][0];
                int ty=n2.y+dis[i][1];
                if(vis[tx][ty]==0&&Map[tx][ty]=='.')
                {
                    //cout<<tx<<" "<<ty<<endl;
                    vis[tx][ty]=2;
                    n1.x=tx;
                    n1.y=ty;
                    q.push(n1);
                }
            }
        }
    }
    void init()
    {
        for(int i=0; i<30; i++)
            for(int j=0; j<30; j++)
                vis[i][j]=0;
    }
    int main(){
        int n,m;
       while( cin>>n>>m)
       {
            init();
            if(n+m==0)
                break;
    
        int x,y;
        for(int i=0; i<m; i++)
        {
            for(int j=0; j<n; j++)
            {
                cin>>Map[i][j];
                if(Map[i][j]=='@'){
                    x=i;
                    y=j;
                }
            }
        }
        n1.x=x;
        n1.y=y;
        vis[x][y]=2;
        q.push(n1);
        BFS();
        int cnt=0;
        for(int i=0; i<m; i++)
        {
    
            for(int j=0; j<n; j++)
             {
                 if(vis[i][j]==2)
                    //cout<<"*"<<" ",cnt++;
                    cnt++;
                 /*else
                    cout<<Map[i][j]<<" ";*/
             }
           //  cout<<endl;
        }
        cout<<cnt<<endl;
       }
    
    
    
    }
    View Code
  • 相关阅读:
    ASP.Net Core -- 模型验证
    C# -- nameof什么意思?
    C# -- value是什么意思?
    C# -- 异常(二)
    C# -- 异常(一)
    C# -- 委托(二)
    C# -- 委托(一)
    ASP.Net Core -- Controller返回View
    ASP.Net Core -- 中间件
    ASP.Net Core -- 服务注册和管道
  • 原文地址:https://www.cnblogs.com/sszywq/p/14267841.html
Copyright © 2011-2022 走看看