样例过了 但是提交的是未知错误
查看原帖
样例过了 但是提交的是未知错误
1194583
X_317楼主2023/12/21 21:37
#include<iostream>
#include<algorithm>
using namespace std;

const int N = 260;
const int M = 35000;
int n,m;
int g[N][N];
bool v[N][N];
int dx[] = {1,-1,0,0};
int dy[] = {0,0,1,-1};
int ans[M];
int max_ans[M];
int num;

void dfs(int x,int y,int &k)
{
		k++;
   		v[x][y] = true;
        for(int i = 0;i<4;i++)
        {
            int a = x + dx[i];
            int b = y + dy[i];
            if(a>=1&&a<=n&&b>=1&&b<=m&&g[a][b]==1&&!v[a][b])
            {
                dfs(a,b,k);
        }
    }
}

int main()
{
	cin>>n>>m;
	for(int i = 1;i<=n;i++)
	{
		for(int j = 1;j<=m;j++)
		{
			cin>>g[i][j];
		}
	}
	int a,b;
	cin>>a>>b;
	
	for(int i = 1;i<=n;i++)
	{
		for(int j = 1;j<=m;j++)
		{
			if(g[i][j] == 1 && !v[i][j])
			{
				int k = 0;
				dfs(i,j,k);
				num++;
				ans[num] = k;
			}
		}
	}
	
	cout<<num<<endl;
	
	sort(ans,ans+2500);
		for(int i = 0;i<=2500;i++)
	{
		if(ans[i]>0)
		{
			max_ans[ans[i]]++;
		}
	}
	
	for(int i = 0;i<=2500;i++)
	{
		if(max_ans[i]>0)
		{
			cout<<i<<" "<<max_ans[i]<<endl;
		}
	}
	return 0;
}
2023/12/21 21:37
加载中...