P5198 0分求调!
查看原帖
P5198 0分求调!
1364355
luogujisuanji楼主2024/6/3 20:03
#include<bits/stdc++.h>
using namespace std;
struct node
{
	int x,y;
};
int main()
{
	int N,area=0,perimeter=0,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
	cin>>N;
	int arry[N][N]={0},vis[N][N]={0};
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
		{
			char c;
			cin>>c;
			if(c=='#')
			{
				arry[i][j]=1;
			}
		}
	}
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
		{
			if(arry[i][j]==1&&vis[i][j]==0)
			{
				int arean=0,perimetern=0;
				queue<node> q;
				q.push({i,j});
				arean++;
				vis[i][j]=1;
				while(q.empty()==0)
				{
					node noden=q.front();
					q.pop();
					for(int k=0;k<4;k++)
					{
						int xx=noden.x,yy=noden.y;
						if(arry[xx][yy]=1&&vis[xx][yy]==0&&xx>=0&&xx<N&&yy>=0&&yy<N)
						{
							arean++;
							q.push({xx,yy});
							vis[xx][yy]=1;
						}
						if(arry[xx][yy]==0||xx<0||xx>=N||yy<00||yy>=N)
						{
							perimetern++;
						}
					}
				}
				if(area>arean)
				{
					area=arean;
					perimeter=perimetern;
				}
				if(area==arean)
				{
					if(perimeter>perimetern)
					{
						perimeter=perimetern;
					}
				}
			}
		}
	}
	cout<<area<<" "<<perimeter;
	return 0;
}
2024/6/3 20:03
加载中...