求助,dfsWA掉了
查看原帖
求助,dfsWA掉了
607157
lzlzl楼主2022/9/6 21:42
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int dx[5]={0,0,0,1,-1};
int dy[5]={0,1,-1,0,0};
int tans,cnt;
int vis[1005][1005];
int a[1005][1005];
int t[62505];
void dfs(int x,int y)
{
	if(x<1||x>n||y<1||y>m) return;
	if(vis[x][y]) return;
	if(a[x][y]==0) return;
	++tans;
	vis[x][y]=cnt;
	for(int i=1;i<=4;i++)
		dfs(x+dx[i],y+dy[i]);
}
int main()
{
	cin>>n>>m;
	if(n==0&&m==0) return 0;
	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(vis[i][j]||a[i][j]==0) continue;
			cnt++;
			dfs(i,j);
			t[tans]++;
			tans=0;
		}
	cout<<cnt<<endl;
	for(int i=1;i<=62500;i++)
		if(t[i]!=0) printf("%d %d\n",i,t[i]);
	return 0;
}
2022/9/6 21:42
加载中...