1 条题解

  • 0
    @ 2025-11-30 16:27:50

    C++ :

    #include<iostream>
    #include<cstring>
    #include<queue>
    #include<cstdio>
    using namespace std;
    const int gx[4]={0,0,-1,1};
    const int gy[4]={1,-1,0,0};
    int m,n,tot=0;
    bool a[110][110];
    void init();
    void work(int,int);
    int main()
    {
    	//freopen("cell10.in","r",stdin);
    	//freopen("cell10.out","w",stdout);
    	init();
    	for(int i=1;i<=m;i++)
    	  for(int j=1;j<=n;j++)
    	    if(a[i][j])work(i,j);
    	cout<<tot<<endl;
    	return 0;
    }
    void work(int x,int y)
    {
    	queue<int> qx,qy;
    	int x1,y1;
    	tot++;
    	qx.push(x);
    	qy.push(y);
    	a[x][y]=0;
    	while(!qx.empty())
    	{
    		for(int i=0;i<4;i++)
    		{
    			x1=qx.front()+gx[i];
    			y1=qy.front()+gy[i];
    			if(x1>0&&x1<=m&&y1>0&&y1<=n&&a[x1][y1])
    			{
    				qx.push(x1);
    				qy.push(y1);
    				a[x1][y1]=false;
    			}
    		}
    		qx.pop();
    		qy.pop();
    	}
    }
    void init()
    {
    	string s;
    	cin>>m>>n;
    	for(int i=1;i<=m;++i)
    	{
    		cin>>s;
    		for(int j=0;j<n;++j)
    		  if(s[j]=='0')a[i][j+1]=0;
    		  else a[i][j+1]=1;
    	}
    }
    
    • 1

    信息

    ID
    1409
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者