第5个点TLE
  • 板块P1162 填涂颜色
  • 楼主WBYZ
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/6 21:07
  • 上次更新2023/10/27 21:41:12
查看原帖
第5个点TLE
602811
WBYZ楼主2022/7/6 21:07
#include<bits/stdc++.h>
using namespace std;
const int maxn=40;

int walk[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
int N;
struct coord{
	int x,y;
};
queue<coord> Q;
int matrix[maxn][maxn];bool vis[maxn][maxn];

void solve(){
	for(int i=2;i<N;++i){
		for(int j=1;j<N;++j){ 
			if(vis[i][j]==false)	matrix[i][j]=2;
			} 
	}
	for(int i=1;i<=N;++i,printf("\n"))	for(int j=1;j<=N;++j) printf("%d ",matrix[i][j]);
}

int main(){
	scanf("%d",&N);
	for(int i=1;i<=N;++i){
		for(int j=1;j<=N;++j) {scanf("%d",&matrix[i][j]);vis[i][j]=true;}}
		
	for(int i=1;i<=N;++i)	for(int j=1;j<=N;++j) {if(matrix[i][j]==1){Q.push(coord{i+1,j+1});i=j=N;}}

	while(!Q.empty()){ 
		cot++;
		coord u=Q.front();
		int nx=u.x,ny=u.y;
		Q.pop();
		vis[nx][ny]=false;
		for(int k=0;k<4;++k){
			int ux=nx+walk[k][0],uy=ny+walk[k][1];
			if(ux<1||uy<1||ux>N||uy>N||matrix[ux][uy]!=0||vis[ux][uy]==false)	continue;
			Q.push(coord{ux,uy});
		}
	}
	solve();
	return 0;
}
2022/7/6 21:07
加载中...