2 条题解

  • 0
    @ 2023-6-17 10:08:53
    #include<bits/stdc++.h>
    using namespace std;
    char ch[110][110];
    int n,m,v[110][110],num;
    int dx[4]={1,0,-1,0};
    int dy[4]={0,1,0,-1};
    void bfs(int s,int t)
    {
    	queue<pair<int,int> >que;
    	que.push({s,t});
    	v[s][t]=1;
    	while(que.size()>0)
    	{
    		int i=que.front().first,j=que.front().second; que.pop();
    		for(int k=0;k<=3;k++)
    		{
    			int x=i+dx[k],y=j+dy[k];
    			if(x>=1&&x<=n&&y>=1&&y<=m && v[x][y]==0&&ch[x][y]!='0')
    			{
    				v[x][y]=1;
    				que.push({x,y});
    			}
    		}
    	}
    }
    int main()
    {
    	cin>>n>>m;
    	for(int i=1;i<=n;i++)cin>>ch[i]+1;
    	
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++)
    			if(v[i][j]==0&&ch[i][j]!='0')
    			{
    				++num;
    				bfs(i,j);
    			}
    	cout<<num;
    
    	return 0;
    }
    
    

    信息

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