全TLE,求调
查看原帖
全TLE,求调
553981
butterbread楼主2023/2/23 22:07
#include<bits/stdc++.h>
using namespace std;
struct node {
	char color;
	int px;
	int py;
};
node a[101][101];
int n,m,cnt,d[2][4]= {{0,1,0,-1},{-1,0,1,0}};
queue <node> q;
int main() {
	scanf("%d%d",&n,&m);
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m+1; j++) {
			scanf("%c",&a[i][j].color);
			if(j!=10){
				a[i][j].px=i;
				a[i][j].py=j;
			}
		}
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++) {
			if(a[i][j].color!='0'){
				q.push(a[i][j]);
				while(!q.empty()) {
					for(int i=0; i<4; i++) {
						int fx=q.front().px+d[0][i];
						int fy=q.front().py+d[1][i];
						if(fx>0&&fx<=n&&fy>0&&fy<=m&&a[fx][fy].color!='0'){
							a[fx][fy].color='0';
							q.push(a[fx][fy]);
						}
					}
				}
				cnt++;
			}
		}
	}
	printf("%d\n",cnt);
	return 0;
}

(板子题代码改编)

#include<bits/stdc++.h>
using namespace std;
struct node {
	int height;
	int ptx;
	int pty;
};
node a[1001][1001];
bool fit[1001][1001];
int n,m,p1,p2,cnt,d[2][4]= {{0,1,0,-1},{-1,0,1,0}};
queue <node> q;
int main() {
	scanf("%d%d%d%d",&n,&m,&p1,&p2);
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++) {
			scanf("%d",&a[i][j].height);
			a[i][j].ptx=i;
			a[i][j].pty=j;
		}
	}
	q.push(a[p1][p2]);
	fit[p1][p2]=true;
	while(!q.empty()) {
		for(int i=0; i<4; i++) {
			int fx=q.front().ptx+d[0][i];
			int fy=q.front().pty+d[1][i];
			if(fx>0&&fx<=n&&fy>0&&fy<=m&&a[p1][p2].height>=a[fx][fy].height&&fit[fx][fy]==false){
				fit[fx][fy]=true;
				q.push(a[fx][fy]);
			}
		}
//		cout<<q.front().height<<" "<<q.front().ptx<<" "<<q.front().pty<<endl;
		q.pop();
		cnt++;
	}
	printf("%d\n",cnt);
	return 0;
}

板子来源

2023/2/23 22:07
加载中...