6 条题解

  • -1
    @ 2026-2-11 10:12:15
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    const int N=1e3+10;
    const int INF=0x3f3f3f3f;
    char a[N][N];
    int n,m,cnt;
    int dx[]={0,0,1,-1};
    int dy[]={1,-1,0,0};
    void dfs(int x,int y)
    {
    	a[x][y]='0';
    	for(int i=0;i<=3;i++)
    	{
    		int xx=x+dx[i];
    		int yy=y+dy[i];
    		if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='0')
    		{
    			dfs(xx,yy);
    		}
    	}
    }
    signed main()
    {
    	cin >> n >> m;
    	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin >> a[i][j];
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++)
    			if(a[i][j]!='0')
    			{
    				cnt++;
    				dfs(i,j);
    		    }
    	cout << cnt;
    	return 0;
    }
    

    信息

    ID
    2311
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    432
    已通过
    141
    上传者